Is possible to get current-menu-item as a php variable?
I’m listing the category museums via the menu item ‘museums we support’ so i’d like the get ‘museums we support’ bit and display it somewhere?
Any help appreciated!
4 s
This is possible by filtering wp_nav_menu_objects
, which is the easiest place to check which item is the current menu item, because WordPress already added the classes for you.
add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
foreach ( $sorted_menu_items as $menu_item ) {
if ( $menu_item->current ) {
$GLOBALS['wpse16243_title'] = $menu_item->title;
break;
}
}
return $sorted_menu_items;
}
You can now use this new global variable instead of the normal title. Simple example:
add_filter( 'single_cat_title', 'wpse16243_single_cat_title' );
function wpse16243_single_cat_title( $cat_title )
{
if ( isset( $GLOBALS['wpse16243_title'] ) ) {
return $GLOBALS['wpse16243_title'];
}
return $cat_title;
}
Of course, this only works if you display the menu before you display the title. If you need it earlier (maybe in the <title>
element?), you should first render the menu and then display it later.