限制某些用户对某些页面的管理员访问权限

时间:2013-03-18 作者:BoBoz

正如标题所说,我想限制某些用户对某些页面的后端访问。

在做一个有45-50页的网站时,我意识到如果页面菜单只列出用户应该能够更改/更新的页面,那将是一个更好的用户体验。

我尝试了下面的插件,但没有成功。Advanced access manager具有该功能,但在3.5.1上不起作用/有缺陷。

http://wordpress.org/extend/plugins/advanced-access-managerhttp://wordpress.org/extend/plugins/role-scoperhttp://wordpress.org/extend/plugins/adminimizehttp://wordpress.org/extend/plugins/s2member

函数中的代码段。php?

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

这段代码对我来说似乎很好(在functions.php中):

$user_id = get_current_user_id();
if ($user_id == 2) {
    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\'] = array(\'123\',\'234\',\'345\');
    }
}

SO网友:ben_jamin

它不会让我发表评论,所以我将此作为一个新的答案添加。

错误:

警告:“call\\u user\\u func\\u array()要求参数1为有效回调,>未找到函数“exclude\\u pages\\u from\\u admin”或函数名无效”。

。。。是因为只有在检查user\\u id后才调用函数。因此,如果您不是以该用户的身份登录,则该函数不存在,并且过滤器返回该错误,因为它正在查找该函数,但找不到它。

所以应该是:

add_filter( \'parse_query\', \'exclude_pages_from_admin\' );

function exclude_pages_from_admin($query) {
    $user_id = get_current_user_id();

    if ($user_id == 2) {
    global $pagenow,$post_type;
     if (is_admin() && $pagenow==\'edit.php\' && $post_type ==\'page\') {
        $query->query_vars[\'post__not_in\'] = array(\'123\',\'234\',\'345\');
     }
    }
}

结束

相关推荐

WP_LIST_PAGES-使用Walker定制输出顺序

我正在使用wp\\u list\\u页面创建导航菜单。不过,我在菜单顺序方面遇到了一个挑战,我正试图找到一种方法来更好地控制菜单的顺序。是否可以使用Walker自定义wp\\U list\\u页面输出的顺序?例如,我想检查wp\\u list\\u pages results中的给定页面是否有post_meta 的值page_x 然后对另一个页面执行相同的操作,如果没有规则匹配,则继续正常操作。