如果当前用户和帖子作者相同,则更改帖子状态的函数

时间:2015-11-10 作者:Rob Gleeson

如果一篇文章是由作者发表的,我想强制它恢复为草稿。以下是我迄今为止编写的函数:

function check_user_publish () {

$user_id = get_current_user_id();
$author_id = the_author_meta( \'ID\' );
$postID = the_ID();

if ($user_id == $author_id) {

    $query = array(
        \'ID\' => $postID,
        \'post_status\' => \'draft\',
    );
    wp_update_post( $query, true );
}} add_action(\'wp_update_post\', \'check_user_publish\');
从逻辑上讲,我认为这似乎是正确的,但当我发布测试帖子时,状态不会恢复为“草稿”。我正在使用Vagrant和VirtualBox进行本地测试。

1 个回复
最合适的回答,由SO网友:Sisir 整理而成

我找不到任何调用的操作wp_update_post. 你确定这是有效的吗?让我们试试钩子publish_post.

add_action(\'publish_post\', \'check_user_publish\', 10, 2);

function check_user_publish ($post_id, $post) {

    $user_id = get_current_user_id();

    if ($user_id != $post->post_author)
        return;

    $query = array(
        \'ID\' => $post_id,
        \'post_status\' => \'draft\',
    );
    wp_update_post( $query, true );

}}
未测试代码

相关推荐