How to remove administrator role in settings -> general -> New User Default Role?

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.

  1. The user-new.php file calls wp_dropdown_roles() to output the list of roles.
  2. The wp_dropdown_roles() function calls get_editable_roles() to get the list of roles to output.
  3. 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

Leave a Comment