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

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.

Leave a Comment