WP_Customize_Nav_Menus::filter_wp_nav_menu( string $nav_menu_content, object $args ): string

Prepares wp_nav_menu() calls for partial refresh.


Injects attributes into container element.

Top ↑

See also

Top ↑


$nav_menu_content string Required
The HTML content for the navigation menu.
$args object Required
An object containing wp_nav_menu() arguments.
More Arguments from wp_nav_menu( ... $args ) Array of nav menu arguments.
  • menu int|string|WP_Term
    Desired menu. Accepts a menu ID, slug, name, or object.
  • menu_class string
    CSS class to use for the ul element which forms the menu.
    Default 'menu'.
  • menu_id string
    The ID that is applied to the ul element which forms the menu.
    Default is the menu slug, incremented.
  • container string
    Whether to wrap the ul, and what to wrap it with.
    Default 'div'.
  • container_class string
    Class that is applied to the container.
    Default 'menu-{menu slug}-container'.
  • container_id string
    The ID that is applied to the container.
  • container_aria_label string
    The aria-label attribute that is applied to the container when it's a nav element.
  • fallback_cb callable|false
    If the menu doesn't exist, a callback function will fire.
    Default is 'wp_page_menu'. Set to false for no fallback.
  • before string
    Text before the link markup.
  • after string
    Text after the link markup.
  • link_before string
    Text before the link text.
  • link_after string
    Text after the link text.
  • echo bool
    Whether to echo the menu or return it. Default true.
  • depth int
    How many levels of the hierarchy are to be included.
    0 means all. Default 0.
    Default 0.
  • walker object
    Instance of a custom walker class.
  • theme_location string
    Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user.
  • items_wrap string
    How the list items should be wrapped. Uses printf() format with numbered placeholders. Default is a ul with an id and class.
  • item_spacing string
    Whether to preserve whitespace within the menu's HTML.
    Accepts 'preserve' or 'discard'. Default 'preserve'.

Top ↑


string Nav menu HTML with selective refresh attributes added if partial can be refreshed.

Top ↑


File: wp-includes/class-wp-customize-nav-menus.php. View all references

public function filter_wp_nav_menu( $nav_menu_content, $args ) {
	if ( isset( $args->customize_preview_nav_menus_args['can_partial_refresh'] ) && $args->customize_preview_nav_menus_args['can_partial_refresh'] ) {
		$attributes       = sprintf( ' data-customize-partial-id="%s"', esc_attr( 'nav_menu_instance[' . $args->customize_preview_nav_menus_args['args_hmac'] . ']' ) );
		$attributes      .= ' data-customize-partial-type="nav_menu_instance"';
		$attributes      .= sprintf( ' data-customize-partial-placement-context="%s"', esc_attr( wp_json_encode( $args->customize_preview_nav_menus_args ) ) );
		$nav_menu_content = preg_replace( '#^(<\w+)#', '$1 ' . str_replace( '\\', '\\\\', $attributes ), $nav_menu_content, 1 );
	return $nav_menu_content;

Top ↑


Version Description
4.3.0 Introduced.

Top ↑

User Contributed Notes

You must log in before being able to contribute a note or feedback.