如何为非管理员角色隐藏仪表板的特定部分?

时间:2017-07-22 作者:Sid

我正在尝试向用户引入控件,并提升用户的监控权限(作为网站管理员,我仍在这样做),这是因为随着网站用户的增加,这项任务有点全面。

我知道我可以使用函数隐藏整个页面,如下所述here, 或者使用插件。但我想具体实现的是,让一些选定的用户(以下简称“管理者”)能够添加/编辑网站的其他用户。但是personal options 在里面user-edit.php 经理不得触碰。

目前,我已授予管理员访问该页面的权限,并且我使用if 函数查看登录的用户是否为管理员,然后仅显示个人选项。

我理解,不得编辑核心文件,因为一旦安装更新,更改将被删除。是否有功能或其他方式(最好是非插件解决方案)来实现上述目标?

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

我不知道你到底想做什么,因为你提供的链接没有提到删除任何管理页面(只是排除一些帖子)。

无论如何,如果您想阻止管理者访问某个页面,如果他们试图访问该页面,您可以将他们重定向到其他地方。

add_filter( \'admin_init\', \'redirect_managers\' );
function redirect_managers() {
    global $pagenow; // Global containing the current page
    if ( $pagenow==\'edit.php\' && current_user_can(\'manager\') ) {
        // If the user has the manager role, redirect them back to dashboard
        wp_safe_redirect( admin_url() );
        // You can also remove the page from the menu
        remove_submenu_page( \'profile.php\' );
    }
}
但是,如果您想隐藏页面的特定部分,同时显示其他部分(例如,隐藏页眉但显示页脚),由于硬代码管理页面,这可能是不可能的。然而,您可能能够一个接一个地修改这些部分,例如挂接到头像、用户名等。

TL;DR不能。如果管理区域的一部分不支持挂钩或过滤器,则意味着它在模板中是硬编码的。您必须要么修改核心(根本不推荐),要么创建一个插件来完成这项工作,然后禁用整个区域。

结束