/** * Keeps the menus in order based on saved orderings * * @since 1.6 * @access public * * @param $wp_admin_bar instance of WP_Admin_Bar passed by refrence * @hook admin_bar_menu * * @return void */ public function reorder_menus(){ /** * @var $wp_admin_bar WP_Admin_Bar */ global $wp_admin_bar; $order = UB_Admin_Bar::order(); if( !$order || !is_array( $order ) ) return; $nodes = $wp_admin_bar->get_nodes(); // remove all nodes foreach( $nodes as $node_id => $node ){ $wp_admin_bar->remove_node( $node_id ); } // add ordered nodes foreach( $order as $o ){ if( isset( $nodes[$o] ) ){ $wp_admin_bar->add_node( $nodes[ $o ] ); unset( $nodes[ $o ] ); } } // add rest of the nodes if( count( $nodes ) > 0 ){ foreach( $nodes as $node ){ $wp_admin_bar->add_node($node); } } }