[wp-trac] [WordPress Trac] #19380: There is no way to specify placement of a new menu item in the Wordpress Admin Bar
WordPress Trac
wp-trac at lists.automattic.com
Mon Nov 28 14:38:13 UTC 2011
#19380: There is no way to specify placement of a new menu item in the Wordpress
Admin Bar
--------------------------+-----------------------------
Reporter: willshouse | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Admin Bar | Version: 3.3
Severity: minor | Keywords:
--------------------------+-----------------------------
I recently opened ticket 19371 (
http://core.trac.wordpress.org/ticket/19371 ) and @Scribu has added a
fantastic and simple solution to be able to modify existing menu items.
The only problem, however, is that it is impossible to control placement
of a new menu item.
For example, if I wanted to add a class on the "wp-logo" menu item, I
would use the method specified in 19371 to remove it, modify it, and add
it back.
{{{
add_action( 'admin_bar_menu', function( $admin_bar ) {
$node = $admin_bar->remove_menu( 'wp-logo' );
$node['meta']['class'] = 'foo';
$admin_bar->add_menu( $node );
}, 99 );
}}}
The only problem is that it would put the menu item at the far right of
the other menu items. I could then remove and re-add all the other menu
items. However I don't think there is a way to get a list of all the top
level menu items from within the admin bar class, so you would have to
know the ID of each one from a print_r debug of the object and hard code
the items in. This would break if a plugin added a menu item that wasn't
in the hard coded list.
My thoughts would be either add a parameter to the add_menu() function
such as priority, which could be boolean and cause the item to be added
with array_unshift() instead of the current method, or a parameter that
would be be for the id to "add before menu item x" , or just a method that
would return a list of ids of the root menu items.
ps: I don't really need to add a CSS class to the wp-logo menu item, but
this is the far-left-most item and I thought it would make the best
example.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/19380>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list