wp_nav_menu
Allows you to change the navigation menu HTML before it is displayed.
Approximate content:
<div class="menu-moyo-menyu-container"> <ul id="menu-moyo-menyu" class="menu"> <li id="menu-item-265" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-265"> <a href="http://wp-test.ru/post-99">Feedback</a> </li> <li id="menu-item-266" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-266"> <a href="http://wp-test.ru/post-98">All articles</a> </li> <li id="menu-item-267" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-267"> <a href="http://wp-test.ru/post-97">Sitemap</a> </li> </ul> </div>
Usage
add_filter( 'wp_nav_menu', 'wp_kama_nav_menu_filter', 10, 2 );
/**
* Function for `wp_nav_menu` filter-hook.
*
* @param string $nav_menu The HTML content for the navigation menu.
* @param stdClass $args An object containing wp_nav_menu() arguments.
*
* @return string
*/
function wp_kama_nav_menu_filter( $nav_menu, $args ){
// filter...
return $nav_menu;
}
- $nav_menu(string)
- The menu HTML content.
- $args(stdClass)
- The object containing parameters passed to wp_nav_menu().
Examples
#1 Wrap the entire menu in a special container
add_filter( 'wp_nav_menu', 'change_wp_nav_menu', 10, 2 );
function change_wp_nav_menu( $nav_menu, $args ) {
return '<section class="menu-wrap">' . $nav_menu . '</section>';
}Changelog
| Since 3.0.0 | Introduced. |
Where the hook is called
wp_nav_menu
wp-includes/nav-menu-template.php 307
$nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args );
Where the hook is used in WordPress
wp-includes/class-wp-customize-nav-menus.php 1353
add_filter( 'wp_nav_menu', array( $this, 'filter_wp_nav_menu' ), 10, 2 );