根据页面插件限制管理员对某些页面的访问

时间:2020-05-14 作者:captainM

我正努力解决这个问题-Restrict admin access to certain pages for certain users

除非我想使用一个页面slug来限制用户。因此

$query->query_vars[\'post__not_in\'] = array(\'123\',\'234\',\'345\');
我希望能够使用

$query->query_vars[\'post__not_in\'] = array(\'home\',\'about-us\',\'contact\');
感谢时间。

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

好的,团队,我明白了,这很简单。使用get\\u page\\u by\\u path检索页面并获取其slug,然后将其作为一个数组对象传递,该数组对象将转换为一个post id数组。由于主页没有slug,我不得不使用get\\u选项获取首页的id并将其推送到数组中。


 function hide_pages_in_admin($query)
{
    // Create array of all the slugs you wanna hide
    $hidden_slugs = array(\'about-us\', \'contact\', \'404\');

    // Loop through slugs & pass each slug as page path value
    foreach ($hidden_slugs as $hidden) {
        $hidden_slugs[] = get_page_by_path($hidden)->ID;
        // In case you need to hide the home page too
        $hidden_IDs[] += get_option(\'page_on_front\');
    }

    // Select the user type to hide pages from
    if (current_user_can(\'editor\')) {
        // Pass the array as value to the query vars filter 
        $query->query_vars[\'post__not_in\'] =  $hidden_slugs;
    }
}
add_filter(\'parse_query\', \'hide_pages_in_admin\');

相关推荐

迁移到其他位置后无法访问wp-admin

我一直在我的博客上工作。昨天我做了所有备份(文件和数据库),我更改了wp配置。php和新用户、DB名称和密码,我在我的实际URL上发布了所有内容。http://agenciamoka.com我的测试URL是http://mokaweb.com.br/Moka/嗯,在我决定访问wp admin之前,一切都很好。当我尝试访问wordpress面板时,它会更改为旧的URL。直截了当:每个链接都指向旧URL。有人知道我要做什么吗?