我只是通过将以下代码添加到处理用户角色的自定义插件中,让单站点管理员有权添加全新用户:
function mc_admin_users_caps( $caps, $cap, $user_id, $args ){
foreach( $caps as $key => $capability ){
if( $capability != 'do_not_allow' )
continue;
switch( $cap ) {
case 'edit_user':
case 'edit_users':
$caps[$key] = 'edit_users';
break;
case 'delete_user':
case 'delete_users':
$caps[$key] = 'delete_users';
break;
case 'create_users':
$caps[$key] = $cap;
break;
}
}
return $caps; }
add_filter( 'map_meta_cap', 'mc_admin_users_caps', 1, 4 );
remove_all_filters( 'enable_edit_any_user_configuration' );
add_filter( 'enable_edit_any_user_configuration', '__return_true');
现在,当我的管理员登录时,他们可以按我希望的方式添加新用户,但我不想让他们选择添加现有用户。我附上了一个屏幕截图,以帮助您了解我正在谈论的内容。知道我如何能够让管理员添加新用户,而不是现有用户?
答案 0 :(得分:0)
我刚遇到同样的问题。供将来参考:
隐藏"添加现有用户" 网络管理员>中的表单用户,您可以将过滤器添加到默认站点functions.php,如此
add_filter('show_network_site_users_add_existing_form', false);
但是,这不会从各个网站中删除该表单。为此,您只需要使用CSS隐藏表单,因为没有可用的过滤器。
将以下内容添加到默认网站主题functions.php
add_action('admin_head', 'remove_existing_user_form');
function remove_existing_user_form() {
if (!is_super_admin()) {
echo '<style>
#add-existing-user,
#add-existing-user + p,
#adduser {
display: none;
}
</style>';
}
}
它并不理想,但除了超级管理员之外,它隐藏了所有用户的表单,这也是我最终要做的事情。