Logo Background RSS

Admin Bar Tricks

  • According to our latest poll, so far the votes are pretty much split on whether people love, hate, or don’t care about WordPress’ new Admin Bar. Over time, it looks like “Hate it” has started to pull ahead, but it doesn’t matter because the Admin Bar is here to stay, regardless of opinion. Already there are many awesome ways to make it do virtually whatever you want. In this DigWP post, we round up a ton of tips, tricks, and plugins for ultimately mastering the WordPress Admin Bar.

    Here is our menu of Admin Bar Tricks for WordPress 3.1 and better:

    Disable the Admin Bar for individual users

    By default, each registered user has the option of showing the Admin on the frontend and/or back-end of the site. Thus, to change your preferences, just visit Users > Your Profile and choose your options as seen here:
    [ Screenshot: Admin Bar Settings ]
    Unfortunately, this gets kind of tedious when customizing profiles for many users. Fortunately, we’re just getting started, so read ahead to see more efficient ways of disabling and modifying the WordPress Admin Bar.

    Disable the Admin Bar for all users of the current theme

    To cleanly disable the Admin Bar for all users of your theme (and thus your site), add this snippet to your theme’s functions.php file:
    // disable the admin bar
    show_admin_bar(false);
    Alternately, you may use this method, which filters the show_admin_bar function:
    // disable the admin bar
    add_filter('show_admin_bar', '__return_false');
    Another option is to hide the Admin Bar using CSS. To do so, paste this into your
    theme’s style.css (or other stylesheet):
    /* hide the admin bar */
    #wpadminbar { display:none; }

    Disable the Admin Bar for non-Admins only

    Expanding on the previous example, here are two snippets that disable the Admin Bar for non-Admins and Editors. Place either of the following in functions.php:
    // show admin bar only for admins
    if (!current_user_can('manage_options')) {
     add_filter('show_admin_bar', '__return_false');
    }
    // show admin bar only for admins and editors
    if (!current_user_can('edit_posts')) {
     add_filter('show_admin_bar', '__return_false');
    }
    As you might guess, any setting may be used for current_user_can(), so it’s easy to show/hide the Admin Bar for any particular group of users.

    Clean up User Profile Page

    After disabling the Admin Bar, you may want to hide its display settings in each user’s Profile Page. The easiest way to do this is with a simple function:
    function hideAdminBar() { ?>
    
    add_action('admin_print_scripts-profile.php', 'hideAdminBar');
    Just place that in your theme’s functions.php and you’re good to go. No more Admin Bar Settings displayed in the Admin area.

    Always show the Admin Bar

    Follow the white rabbit shows us how to show the Admin Bar even when logged out. As a bonus, a handy “Log in” button is added to the bar for easy maneuvering. Just add the following snippet to your theme’s functions.php file:
    // always show admin bar
    function pjw_login_adminbar( $wp_admin_bar) {
     if ( !is_user_logged_in() )
     $wp_admin_bar->add_menu( array( 'title' => __( 'Log In' ), 'href' => wp_login_url() ) );
    }
    add_action( 'admin_bar_menu', 'pjw_login_adminbar' );
    add_filter( 'show_admin_bar', '__return_true' , 1000 );
    You can see it in action at follow the white rabbit.

    Move the Admin Bar to the bottom

    Want to display the Admin Bar at the bottom of the page instead of the top? WPengineer shows us how with this bit of CSS via the functions.php file:
    // move admin bar to bottom
    function fb_move_admin_bar() { ?>
     
    // on backend area
    add_action( 'admin_head', 'fb_move_admin_bar' );
    // on frontend area
    add_action( 'wp_head', 'fb_move_admin_bar' );
    This code adds the required CSS to both the front-end (public pages) and back-end (admin pages). To disable for one or the other, just comment-out or remove the corresponding add_action() line near the end of the code. You could also just copy/paste the CSS into your theme’s style.css file if you only need to move it on the front-end of your site. An even easier way is provided by Coen Jacobs’ Stick Admin Bar To Bottom plugin that makes it happen automagically.

    Add or Remove links from the Admin Bar

    WPMU.org shows us how to add/remove links from the Admin Bar. This is especially useful for MultiSite networks, where all of the extra links may not be necessary. The following code may be used to remove links and/or menus (via functions.php:
    // remove links/menus from the admin bar
    function mytheme_admin_bar_render() {
     global $wp_admin_bar;
     $wp_admin_bar->remove_menu('comments');
    }
    add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );
    For this example, we use remove_menu('comments') to remove the comments dropdown list. To remove a different link/menu, check /wp-includes/admin-bar.php for the corresponding ID. Here’s a list of some of them to get you started:
    • my-account – link to your account (avatars disabled)
    • my-account-with-avatar – link to your account (avatars enabled)
    • my-blogs – the “My Sites” menu if the user has more than one site
    • get-shortlink – provides a Shortlink to that page
    • edit – link to the Edit/Write-Post page
    • new-content – link to the “Add New” dropdown list
    • comments – link to the “Comments” dropdown
    • appearance – link to the “Appearance” dropdown
    • updates – the “Updates” dropdown
    To add links/menus to the Admin Bar, add the following code to your functions.php file:
    // add links/menus to the admin bar
    function mytheme_admin_bar_render() {
     global $wp_admin_bar;
     $wp_admin_bar->add_menu( array(
      'parent' => 'new-content', // use 'false' for a root menu, or pass the ID of the parent menu
      'id' => 'new_media', // link ID, defaults to a sanitized title value
      'title' => __('Media'), // link title
      'href' => admin_url( 'media-new.php') // name of file
      'meta' => false // array of any of the following options: array( 'html' => '', 'class' => '', 'onclick' => '', target => '', title => '' );
     ));
    }
    add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );
    You’ll want to adjust the parameters to fit your needs, and don’t forget to see the Codex for additional information. For even more insight into this technique, see WPengineer’s post on adding menus to the Admin Bar.

    Disable and Customize the Admin Bar with Plugins

    Almost immediately after the Admin Bar was added to the WordPress core, plugins started popping up to disable it, move it, minimize it, and more. Here’s a quick list of plugins and links for ultimate control over the Admin Bar.
    If you know of others, mention them in the comments and we’ll add them to the list!