WordPress角色-保护管理员角色

时间:2018-04-11 作者:JohnDoe

我们希望提供其站点的所有者、管理员角色,但不希望他们删除用户1。我们也不希望有一个廉价的解决方案阻止他们的管理员帐户删除用户。一般来说,他们需要完全的用户权限来添加/编辑/删除用户,而不是用户1帐户或其上方的角色。

Drupal中有一个名为“保护用户1”的模块,该模块允许创建多个管理员帐户,但没有一个可以编辑/删除用户1。WP生态系统是否有类似的功能?

3 个回复
最合适的回答,由SO网友:Milan Bastola 整理而成

安装用户角色编辑器插件为他们创建角色分配除删除管理员之外的所有内容

SO网友:WebElaine

WP和Drupal有点不同。首先admin 角色是专门设计用来做任何事情的角色。与其试图限制管理员角色,最好的做法是创建您需要的任何自定义角色-您可以设置almost-admin 键入具有除要限制的功能外的所有功能的角色。这通常对网站所有者来说是最好的,因为你可以去掉一些只有开发人员才真正需要的技术能力,并且通过对所有者的登录进行更严格的限制,你不会有那么多管理级别的用户四处游荡,网站被黑客攻击的可能性越来越大。如果该网站遭到黑客攻击,但他们获得了较低级别的用户登录,您可能可以防止一些损害。

另一个问题是,WP角色和功能系统的设置不允许用户部分访问功能。所以,你不能允许任何角色delete_users 即使您使用流行的用户管理插件,也可以为某些角色而不是其他角色提供功能。但也许其他角色就足够了:如果你不让他们delete_users 总体而言,您仍然可以让他们能够add_users, edit_users, 和promote_users 如果这些是你真正需要限制的。

SO网友:Nathan Johnson

这是map_meta_cap 滤器

function my_map_meta_cap( $caps, $cap, $user_id, $args ) {
  if( \'delete_user\' !== $cap ) {
    return $caps;
  }
  if( isset( $args[0] ) && 1 === $args[0] ) {
    $caps[] = \'cant_do_this\';
  }
  return $caps;
}
add_filter( \'map_meta_cap\', \'my_map_meta_cap\', 10, 4 );
此代码要求尝试删除user\\u id为1的用户的任何人必须具有cant_do_this 能力。由于没有人具有此功能,因此没有人可以删除此用户。

当然,如果管理员可以编辑插件,那么他们可以禁用插件并删除用户。可能最好将其作为必备插件使用。

结束