阻止用户创建具有特定角色的新用户

时间:2018-02-04 作者:Christopher

在多站点安装中,我创建了一些自定义角色。其中一些具有创建新用户的能力。

我想允许用户仅使用允许的角色创建新用户。

一个步骤是使用editable_roles 筛选以从下拉列表中删除角色,但这不会阻止用户修改选择值并创建具有“不允许”角色的用户。

1 个回复
SO网友:swissspidy

一个步骤是使用editable_roles 筛选以从下拉列表中删除角色,但这不会阻止用户修改选择值并创建具有“不允许”角色的用户。

是的,的确如此。此过滤器不仅仅用于下拉列表。修改editable_roles 实际上阻止用户分配不允许的角色。

这是因为edit_user() (用于添加新用户的函数)调用get_editable_roles() 当不允许用户扮演该角色时,也会退出。

下面是一个简单的示例,说明您可以做什么:

/**
 * Removes Administrator from roles list if user isn\'t an admin themselves.
 *
 * This way, only admins can make new admins.
 *
 * @param array $all_roles List of roles.
 * @return array Modified list of roles.
 */
function wpse_293133_filter_editable_roles( $all_roles ) {
  if ( ! is_super_admin( get_current_user_id() ) ) {
    unset( $all_roles[\'administrator\'] );
  }

  return $all_roles;
}

add_filter( \'editable_roles\', \'wpse_293133_filter_editable_roles\' );

结束

相关推荐

Website DR using Multisite

我是Wordpress多站点功能的新手。我一直在想,这个多站点是否可以用于为网站创建灾难恢复站点?如果我有www.abc。com从我的DC运行,该DC构建在CentOS上的PhP和Apache Web服务器上,以MySQL作为后端数据库,我需要为网站设置DR,如果我的生产停止,该多站点是否可以在任何情况下使用?我想这个问题可能太简单了,或者可能已经结束了,但如果你们有什么可以帮助的,那就太好了。或者你可以告诉我建立DR for网站的最佳方法是什么。