是否将贡献者限制为只能查看他们自己的自定义帖子类型?

时间:2013-03-04 作者:bocoroth

对于我们的“帖子”类型,我们的贡献者只能看到他们自己的帖子,这就是我们想要的。但是对于我们的自定义帖子类型,贡献者可以看到每一篇帖子,包括草稿。有没有办法限制他们对自定义帖子的查看,让他们只看到自己的帖子,就像“帖子”类型一样?

编辑:也许我对自己的问题不太清楚。我希望贡献者能够看到所有自定义类型(视频、图像等),但在每个自定义类型中,我希望他们只能看到自己的帖子。例如,如果他们看CPT视频,他们只能看到自己发布的视频,而不能看到其他人发布的视频。

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

你需要使用动作钩pre_get_posts.

有关详细信息,请参见注释,并将自定义帖子类型修改为您自己的类型:

add_action( \'pre_get_posts\', \'filter_cpt_listing_by_author_wpse_89233\' );

function filter_cpt_listing_by_author_wpse_89233( $wp_query_obj ) 
{
    // Front end, do nothing
    if( !is_admin() )
        return;

    global $current_user, $pagenow;
    wp_get_current_user();

    // http://php.net/manual/en/function.is-a.php
    if( !is_a( $current_user, \'WP_User\') )
        return;

    // Not the correct screen, bail out
    if( \'edit.php\' != $pagenow )
        return;

    // Not the correct post type, bail out
    if( \'portfolio\' != $wp_query_obj->query[\'post_type\'] )
        return;
        
    // If the user is not administrator, filter the post listing
    if( !current_user_can( \'delete_plugins\' ) )
        $wp_query_obj->set(\'author\', $current_user->ID );
}
您会注意到,需要更正所有已发布的草稿的帖子数量
请参阅solution here.

结束

相关推荐