how-to-hide-the-adminstrator-on-the-wordpress-users-screen

HOW TO HIDE THE ADMINSTRATOR ON THE WORDPRESS USERS SCREEN

WordPress has a great admin interface for managing just about every aspect of the software. One integral part of this interface is the “Authors & Users” screen:

This is a great utility and it gives us,  as the developers, the freedom to let our clients have control over their own authors and users.

If you develop like we do though, you’ve probably learned that its better for everyone when we limit the clients ability to have access to areas of the site that they don’t need on a day to day basis. The Plugins and Appearance utilities are a great example.

This usually isn’t a problem because WordPress integrated role management into their software. A common solution – and one that we use at FullThrottle – is to simply retain the “Admintrator” role for yourself and split up the remaining roles for your client as needed. No problem!

What if we don’t want our clients to be distracted by the default “Administrator” account that we leave in tact though? Is there a simple way to remove this from the client’s screen? Well… if simple means fool proof and strictly using PHP and WordPress hook, then no (though we may submit some patches to make this possible). Regardless, what you can’t do with PHP, you can always do with jQuery. Below is our ‘smoke and mirrors’ way to remove all administrator level roles from the User’s screen if being viewed by anyone not in that role.

REMOVING ADMINISTRATORS FROM WORDPRESS USERS & AUTHORS

All of the code below will be placed in your theme’s functions.php folder:

Step one: Queue the jQuery. Technically, jQuery should already be enqueued, but better safe than sorry:

// Enqueue jQuery
add_action(‘admin_enqueue_scripts’ , ‘ft_hide_administrator_jquery’ );
function ft_hide_administrator_jquery(){
global $pagenow;
if ( ‘users.php’ == $pagenow ){
wp_enqueue_script(‘jquery’);
}
}
Step Two: Remove ‘Administrator from the dropdown boxes

// Remove Administrator from “Editable Roles”
add_action( ‘editable_roles’ , ‘ft_hide_adminstrator_editable_roles’ );
function ft_hide_adminstrator_editable_roles( $roles ){
if ( isset( $roles[‘administrator’] ) && !current_user_can(‘level_10’) ){
unset( $roles[‘administrator’] );
}
return $roles;
}
Step Three: Use some jQuery magic to remove the administrator

// Hide Administrator from list of users
add_action(‘admin_head’ , ‘ft_hide_administrator_user’);
function ft_hide_administrator_user(){
if ( !current_user_can(‘level_10′) ){
?>
<script type=’text/javascript’ >
jQuery(document).ready(function(){
var admin_count;
var total_count;

jQuery(“#list-filter > .subsubsub > li > a:contains(Administrator)”).each(function(){
admin_count = jQuery(this).children(‘.count’).text();
admin_count = admin_count.substring(1, admin_count.length – 1);
});
jQuery(“#list-filter > .subsubsub > li > a:contains(Administrator)”).parent().remove();
jQuery(“#list-filter > .subsubsub > li > a:contains(All)”).each(function(){
total_count = jQuery(this).children(‘.count’).text();
total_count = total_count.substring(1, total_count.length – 1) – admin_count;
jQuery(this).children(‘.count’).text(‘(‘+total_count+’)’);
});
jQuery(“#users > tr .administrator”).parent().parent().remove();
});
</script>
<?php
}
}
That’s it! As always, if you find any bugs or have any suggestions, just leave a comment. Below is a link to download the whole chunk of code. Just paste the contents into functions.php and you should be good to go!