wp_nav_menu: show menu only if one exists, otherwise show nothing

Use has_nav_menu(), and test for theme_location, rather than menu_id: <?php if ( has_nav_menu( $theme_location ) ) { // User has assigned menu to this location; // output it wp_nav_menu( array( ‘theme_location’ => $theme_location, ‘menu_class’ => ‘nav’, ‘container’ => ” ) ); } ?> You can output alternate content, by adding an else clause. EDIT You … Read more

Removing container from wp_nav_menu not working

[SOLVED] IT DOES NOT WORK when you are referring to an inexisting location. e.g. when you copied the code from somewhere else, or you haven’t created your menu or location yet in the dasboard. e.g. remove “, ‘theme_location’ => ‘primary’” from the following code: wp_nav_menu( array( ‘container’=> false, ‘menu_class’=> false, ‘menu_id’=> ‘ia_toplevel’, ‘theme_location’ => ‘primary’ … Read more

Adding first / last CSS classes to menus

A better and simpler approach: function add_first_and_last($items) { $items[1]->classes[] = ‘first-menu-item’; $items[count($items)]->classes[] = ‘last-menu-item’; return $items; } add_filter(‘wp_nav_menu_objects’, ‘add_first_and_last’);

Split up wp_nav_menu with custom walker

Using a custom Walker, the start_el() method has access to $depth param: when it is 0 the elemnt is a top one, and we can use this info to maintain an internal counter. When the counter reach a limit, we can use DOMDocument to get from full HTML output just the last element added, wrap … Read more

Display Menu Name using wp_nav_menu

If you know the menu’s slug, then things are easier, otherwise you can use this function to get the menu at a specified location. <?php function wpse45700_get_menu_by_location( $location ) { if( empty($location) ) return false; $locations = get_nav_menu_locations(); if( ! isset( $locations[$location] ) ) return false; $menu_obj = get_term( $locations[$location], ‘nav_menu’ ); return $menu_obj; } … Read more