wp_nav_menufilter-hookWP 3.0.0

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_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 );