The question:
I don’t want to accidentally select Administrator role.
So is there a way to remove it from Settings -> General -> New User Default Role
?
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
Okay, this looks tricky, but I think it’s possible.
- The
user-new.php
file callswp_dropdown_roles()
to output the list of roles. - The
wp_dropdown_roles()
function callsget_editable_roles()
to get the list of roles to output. - The
get_editable_roles()
function has a filter,editable_roles
.
So, you should be able to add a filter for editable_roles
, such that, if the current page is user-new.php
, you unset administrator
from $editable_roles
.
Edit
It would be awesome if you can give me the code for my functions.php file.
This is completely untested, but should get you in the right direction. I’m assuming that $editable_roles
is an array of user roles, e.g. array( 'subscriber', 'author', 'editor', 'administrator' )
, but I’ve not verified.
<?php
function wpse_40897_filter_get_editable_roles_for_new_user( $editable_roles ) {
global $pagenow;
if ( 'user-new.php' == $pagenow ) {
unset( $editable_roles['administrator'] );
}
return $editable_roles;
}
add_filter( 'editable_roles', 'wpse_40897_filter_get_editable_roles_for_new_user' );
?>
Caveat: This isn’t turn-key code, but rather is merely example code. If you’re not comfortable grokking it to get where you need, then I wouldn’t recommend using it for copy-pasta.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0