Is the new WordPress 3.1 admin bar pluggable and how can I extend it?

Yoast’s plug-in is actually a very good example if all you want to do is add menus. Basically, the admin bar is just an alternate set of links to the same plug-in admin pages you have in the sidebar. To add the top-level SEO menu, Yoast does the following:

$wp_admin_bar->add_menu( array( 'id' => 'wpseo-menu', 'title' => __( 'SEO' ), 'href' => get_admin_url('admin.php?page=wpseo_dashboard'), ) );

This adds a menu named “wpseo-menu” to the admin bar and directs users to the plug-in’s dashboard when they click the link. Child links are added in a similar fashion:

$wp_admin_bar->add_menu( array( 'parent' => 'wpseo-menu', 'id' => 'wpseo-kwresearch', 'title' => __( 'Keyword Research' ), '#', ) );

You just specify the “parent” of the menu you’re adding.

Then you can go as deep as you need to, calling $wp_admin_bar->add_menu() when you need to and specifying the appropriate information.


For reference, the variable, $wp_admin_bar is an instance of the class WP_Admin_Bar() within WordPress. It has several different methods and properties, but the one you’re most interested in here is, obviously, add_menu(). This method accepts certain parameters:

  • title – default false
  • href – default false,
  • parent – default false – pass the ID value for a submenu of that menu
  • id – defaults to a sanitized title value.
  • meta – default false – array of any of the following options: array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

But the rest of the WP_Admin_Bar() class is pluggable. It just depends on what exactly you’re trying to do and how you want to do it.

See Also:

Leave a Comment