diff --git a/wp-admin/includes/user.php b/wp-admin/includes/user.php index 1a2f99713..65866051b 100644 --- a/wp-admin/includes/user.php +++ b/wp-admin/includes/user.php @@ -78,7 +78,8 @@ function edit_user( $user_id = 0 ) { $new_role = sanitize_text_field( $_POST['role'] ); $potential_role = isset($wp_roles->role_objects[$new_role]) ? $wp_roles->role_objects[$new_role] : false; // Don't let anyone with 'edit_users' (admins) edit their own role to something without it. - if ( $user_id != $current_user->id || ($potential_role && $potential_role->has_cap( 'edit_users' ) ) ) + // Multisite super admins can freely edit their blog roles -- they possess all caps. + if ( ( is_multisite() && is_site_admin() ) || $user_id != $current_user->id || ($potential_role && $potential_role->has_cap( 'edit_users' ) ) ) $user->role = $new_role; // If the new role isn't editable by the logged-in user die with error