在函数wordpress中不工作is_author(get_current_user_id())

时间:2016-11-25 16:38:43

标签: wordpress function

我有问题为已创建帖子的用户应用post_type,理论上我发现了wordpress的那些功能,但显然它不起作用

function preview_publish_posts($query) { 
    if( is_user_logged_in() && is_author(get_current_user_id()) ) {
        $query->set('post_status', array('publish', 'pending'));
    }
    return $query;
}

add_filter('pre_get_posts', 'preview_publish_posts');

或者该功能可能无法从functions.php

中调用它

1 个答案:

答案 0 :(得分:0)

经过大量的游戏,我发现无论我如何尝试,is_author(get_current_user_id())永远不会返回true。我检查是否是get_current_user_ID的错误,但这将返回正确的值。我最终使用了一种稍微不同的方法来达到预期的效果。

下面的代码为我解决了问题,但我仍然想知道为什么is_author(get_current_user_id())在这种情况下不起作用。

function preview_publish_posts($query) {

    $curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author'));

    if ( !is_admin() && $query->is_main_query() && is_author() ){
        if( is_user_logged_in() && $curauth->ID == get_current_user_id() ) {        
            $query->set( 'post_status', array('publish', 'pending'));
        }
        return;
    } 
}

add_action( 'pre_get_posts', 'preview_publish_posts' );