创建子管理员角色,该角色可以执行除使用或查看代码编辑器之外的所有操作

时间:2017-04-22 作者:Justin Barrett

我正在为一个其他人将管理的网站做代码工作。我担心仅仅告诉他们不要在外观或插件上使用代码编辑器不足以阻止他们这样做。

我试过标准的WordPressadd_role( $role, $title, $capability ) 但我不知道什么样的术语组合可以让他们编辑页面、帖子、帖子类型、添加或删除插件、添加和删除用户,以及编辑WordPress自定义程序。我还想确保此用户角色不能删除具有管理员角色的用户。

这没有起到作用:

add_role( \'sub_admin_role\', \'Sub-Admin\', array( \'level_7\' => true ) );

2 个回复
SO网友:Nathan Johnson

您的代码无法运行,因为WordPress不推荐使用3.0版(2010年6月)中的用户级别。

您要做的是创建一个插件,该插件在激活时为站点所有者创建一个新角色,该角色是管理员角色的克隆,但不能编辑插件或主题文件。这些能力是edit_pluginsedit_themes 分别地

然后,在停用后,您希望将所有者重新分配到管理员角色。这样,他们只需停用插件,就可以完全重新控制自己的网站。

/**
 * Plugin Name: WPSE 264483
 */

//* On activation, create an owner role that can do everything but edit themes/plugins
register_activation_hook( __FILE__, \'wpse_264483_activation\' );
function wpse_264483_activation() {
  $administrator = get_role( \'administrator\' );
  $owner = clone( $administrator );
  unset( $owner->capabilities[ \'edit_plugins\' ] );
  unset( $owner->capabilities[ \'edit_themes\' ] );
  add_role( \'owner\', \'Owner\', $owner->capabilities );
}
//* On deactivation, re-assign all owners to administrators and remove owner role
register_deactivation_hook( __FILE__, \'wpse_264483_activation\' );
function wpse_264483_deactivation() {
  $owners = get_users( [
    \'role\' = \'owner\',
  ] );
  foreach( $owners as $owner ) {
    $owner->add_role( \'administrator\' );
    $owner->remove_role( \'owner\' );
  }
  remove_role( \'owner\' );
}
我已经根据客户的要求为其启用了一个类似的插件,但我认为在没有他们完全知情和同意的情况下这样做是一个坏主意。毕竟这是他们的网站。

SO网友:JItendra Rana

使用此插件

https://wordpress.org/plugins/advanced-access-manager/

此插件是您管理任何用户、角色或访问者访问网站前端和后端所需的全部功能。

激活插件。导航到所需角色的功能并删除以下两个功能。

edit_themes edit_plugins

相关推荐

正在尝试获取wp-includes/capabilities.php中非对象的属性

在调试中,我每分钟都会收到以下通知序列。日志:[23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1022 [23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/