Hide pages depending on role

时间:2013-05-21 作者:StealthRT

我一直在试图找到一种方法来限制用户在管理面板的“页面”菜单中看到一些页面。

我查看了编辑。php文件并注意到:

} elseif ( \'page\' == $post_type ) {
但是,我不确定需要编辑什么才能显示some 页面和隐藏其他页面,具体取决于角色。

这个Admin 将能够看到所有帖子。

这个SubAdmin 只能看到一些页面。

如何编辑编辑。php文件(或其他一些php文件)来执行此操作?

1 个回复
SO网友:Ravinder Kumar

获取用户的当前角色

$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
   return;
$roles = $current_user->roles;  //$roles is an array
获取要根据角色显示的角色集页面ID后(例如)

    if($roles==\'administrator\'){
     $args=array(\'21\',\'22\',\'23\');
    }

   or

   if($roles==\'subscriber\'){
     $args=array(\'24\',\'25\',\'26\');
    }
您可以使用parse_query 使用post\\u not\\u in属性筛选挂钩以排除页面

add_filter( \'parse_query\', \'exclude_pages_from_admin\' );
function exclude_pages_from_admin($query) {
    global $pagenow,$post_type;
    if (is_admin() && $pagenow==\'edit.php\' && $post_type ==\'page\') {
        $query->query_vars[\'post__not_in\'] = $args
    }
}

Important Links:

结束

相关推荐

Admin Ajax is returning 0

我对jQuery和AJAX尤其陌生。我有一个小问题,返回值总是0,尽管我认为这实际上是成功消息,它没有返回任何内容。我已经搜索了Google verse,在PHP回调上有die()函数,我相信add\\u操作是正确的。我在一个本地主机上工作,但我怀疑这会影响它,这都是在管理中,而不是在前端。我还检查了js是否已排队并本地化。我在chrome开发者区收到一条200 OK的消息。我还测试了http://codex.wordpress.org/AJAX_in_Plugins 它还返回了0,这让我怀疑它是否不是下