wp_nav_menu_argsfilter-hookWP 3.0.0

Allows you to change the arguments passed to wp_nav_menu() after they have been merged with the default values.

Usage

add_filter( 'wp_nav_menu_args', 'wp_kama_nav_menu_args_filter' );

/**
 * Function for `wp_nav_menu_args` filter-hook.
 * 
 * @param array $args Array of wp_nav_menu() arguments.
 *
 * @return array
 */
function wp_kama_nav_menu_args_filter( $args ){

	// filter...
	return $args;
}
$args(array)
An array of arguments.

Examples

#1 Change parameters for all menus at once

add_filter( 'wp_nav_menu_args', 'change_nav_menu_args' );

function change_nav_menu_args( $args ) {
	$args['fallback_cb']  = false;
	$args['menu_class']   = 'parent-menu';
	$args['item_spacing'] = 'discard';

	return $args;
}

#2 Change parameters for a specific menu

Change some parameters only for the menu displayed in the header-menu menu location.

This code also shows how to check whether the user is logged in and display a different menu name for logged-out users.

add_filter( 'wp_nav_menu_args', 'change_nav_menu_args' );

function change_nav_menu_args( $args ) {

	if ( $args['theme_location'] === 'header-menu' ) {

		$args['fallback_cb']  = false;
		$args['menu_class']   = 'parent-menu';
		$args['item_spacing'] = 'discard';

		if ( ! is_user_logged_in() ) {
			$args['menu'] = 'Your menu name';
		}
	}

	return $args;
}

Changelog

Since 3.0.0 Introduced.

Where the hook is called

wp_nav_menu()
wp_nav_menu_args
wp-includes/nav-menu-template.php 102
$args = apply_filters( 'wp_nav_menu_args', $args );

Where the hook is used in WordPress

wp-includes/class-wp-customize-nav-menus.php 1352
add_filter( 'wp_nav_menu_args', array( $this, 'filter_wp_nav_menu_args' ), 1000 );