(Moderator’s note: Original title was “Remove Admin from User Menu”)
I have created a client administrator role which is essentially an Editor with ability to add/remove users. The article “Editor can create any new user except administrator” was excellent in helping keep my new client admin role from editing or creating a True admin user.
However what would be ideal is to hide administrators from client admins when they are viewing users. I want them to “believe” that they are the admin of their site but I do not want them to be able to even view my role/user–essentially hiding the “administrator” role from them when they are in the “Users” panel.
Hi @Carlos:
Try adding the following to your theme’s functions.php
file, or in a .php
file within a plugin that you might be writing (which works for WordPress 3.1.x):
add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
$user = wp_get_current_user();
if ($user->ID!=1) { // Is not administrator, remove administrator
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
}
}
If you have WordPress 3.0.x try this instead (since WordPress didn’t add the 'pre_user_query'
hook until 3.1):
add_action('pre_user_search','yoursite_pre_user_search');
function yoursite_pre_user_search($user_search) {
$user = wp_get_current_user();
if ($user->ID!=1) { // Is not administrator, remove administrator
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
}
}