Title: WP_Nav_Menu_Widget::widget
Published: April 25, 2014
Last modified: February 24, 2026

---

# WP_Nav_Menu_Widget::widget( array $args, array $instance )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#wp--skip-link--target)

Outputs the content for the current Navigation Menu widget instance.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#parameters)󠁿

 `$args`arrayrequired

Display arguments including `'before_title'`, `'after_title'`, `'before_widget'`,
and `'after_widget'`.

`$instance`arrayrequired

Settings for the current Navigation Menu widget instance.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#source)󠁿

    ```php
    public function widget( $args, $instance ) {
    	// Get menu.
    	$nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;

    	if ( ! $nav_menu ) {
    		return;
    	}

    	$default_title = __( 'Menu' );
    	$title         = ! empty( $instance['title'] ) ? $instance['title'] : '';

    	/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
    	$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );

    	echo $args['before_widget'];

    	if ( $title ) {
    		echo $args['before_title'] . $title . $args['after_title'];
    	}

    	$format = current_theme_supports( 'html5', 'navigation-widgets' ) ? 'html5' : 'xhtml';

    	/**
    	 * Filters the HTML format of widgets with navigation links.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param string $format The type of markup to use in widgets with navigation links.
    	 *                       Accepts 'html5', 'xhtml'.
    	 */
    	$format = apply_filters( 'navigation_widgets_format', $format );

    	if ( 'html5' === $format ) {
    		// The title may be filtered: Strip out HTML and make sure the aria-label is never empty.
    		$title      = trim( strip_tags( $title ) );
    		$aria_label = $title ? $title : $default_title;

    		$nav_menu_args = array(
    			'fallback_cb'          => '',
    			'menu'                 => $nav_menu,
    			'container'            => 'nav',
    			'container_aria_label' => $aria_label,
    			'items_wrap'           => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    		);
    	} else {
    		$nav_menu_args = array(
    			'fallback_cb' => '',
    			'menu'        => $nav_menu,
    		);
    	}

    	/**
    	 * Filters the arguments for the Navigation Menu widget.
    	 *
    	 * @since 4.2.0
    	 * @since 4.4.0 Added the `$instance` parameter.
    	 *
    	 * @param array   $nav_menu_args {
    	 *     An array of arguments passed to wp_nav_menu() to retrieve a navigation menu.
    	 *
    	 *     @type callable|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty.
    	 *     @type mixed         $menu        Menu ID, slug, or name.
    	 * }
    	 * @param WP_Term $nav_menu      Nav menu object for the current menu.
    	 * @param array   $args          Display arguments for the current widget.
    	 * @param array   $instance      Array of settings for the current widget.
    	 */
    	wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args, $instance ) );

    	echo $args['after_widget'];
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/widgets/class-wp-nav-menu-widget.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/widgets/class-wp-nav-menu-widget.php#L42)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/widgets/class-wp-nav-menu-widget.php#L42-L112)

## 󠀁[Hooks](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#hooks)󠁿

 [apply_filters( ‘navigation_widgets_format’, string $format )](https://developer.wordpress.org/reference/hooks/navigation_widgets_format/)

Filters the HTML format of widgets with navigation links.

 [apply_filters( ‘widget_nav_menu_args’, array $nav_menu_args, WP_Term $nav_menu, array $args, array $instance )](https://developer.wordpress.org/reference/hooks/widget_nav_menu_args/)

Filters the arguments for the Navigation Menu widget.

 [apply_filters( ‘widget_title’, string $title, array $instance, mixed $id_base )](https://developer.wordpress.org/reference/hooks/widget_title/)

Filters the widget title.

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_nav_menu()](https://developer.wordpress.org/reference/functions/wp_nav_menu/)`wp-includes/nav-menu-template.php` |

Displays a navigation menu.

  | 
| [wp_get_nav_menu_object()](https://developer.wordpress.org/reference/functions/wp_get_nav_menu_object/)`wp-includes/nav-menu.php` |

Returns a navigation menu object.

  | 
| [current_theme_supports()](https://developer.wordpress.org/reference/functions/current_theme_supports/)`wp-includes/theme.php` |

Checks a theme’s support for a given feature.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  |

[Show 3 more](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/widget/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.0.0](https://developer.wordpress.org/reference/since/3.0.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_nav_menu_widget%2Fwidget%2F)
before being able to contribute a note or feedback.