在管理员管理用户页面中,如何阻止具有特定权限的用户编辑具有其他权限的用户?

时间:2017-06-29 作者:Alex Kibler

我的应用程序中有两个自定义角色:super_administratorliaison. 在管理用户页面的上下文中,超级管理员可以执行任何操作,但liaisons 是只读的。超级管理员可以看到在应用程序中注册的所有用户,但联系人只能看到与他们在同一学院的用户(通过元密钥处理)。

当联络人登录并转到用户页面时,我希望他们能够看到所在学院的所有用户(这已经在运行),但不能编辑他们。

我对user_row_actions 过滤以删除编辑(和删除)按钮,并且每当他们作为联系人登录时,我都会删除批量操作容器。

但是,他们仍然可以单击用户的名称并转到该页面进行编辑。我有什么办法可以防止这种情况发生吗?

1 个回复
SO网友:WebElaine

听起来您想从“联系人”角色中删除以下权限:

创建用户,删除用户,这样他们可以看到列表,但不能编辑任何内容。

删除这些权限的最简单方法是使用角色编辑器插件。有几个可用;您将选择“联系人”角色,然后通过一系列复选框,可以删除上述权限。保存后,可以删除插件;WP将保留您保存的权限。

如果您不想使用第三方插件,可以使用如下代码:

// Temporarily remove Liaison
remove_role(\'liaison\');
// Add Liaison role back, with only the permissions you specify here
add_role(\'liaison\', \'Liaison\');
$liaison = get_role(\'liaison\');
$liaison->add_cap(\'read\');
$liaison->add_cap(\'list_users\');
您可能会发现联系人需要一些其他权限,但这将使他们能够以只读方式访问内容以及用户列表。

结束

相关推荐

从wp_USERS和wp_USERMETA中一次删除几千个订户

我有一个有7万垃圾邮件订阅者的网站,我不需要他们中的任何一个。因此,我需要使用adminer和/或phpmyadmin中的查询从wp\\U users中删除所有订阅者,并从wp\\U usermeta中删除每个用户的关联元。但是为了防止服务器崩溃,我怎么能一次删除几千个呢?这似乎是我需要的基本查询:DELETE FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE meta