Title: WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus
Published: August 18, 2015
Last modified: August 20, 2026

---

# WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus( WP_Term[] $menus, array $args ): 󠀁[WP_Term](https://developer.wordpress.org/reference/classes/wp_term/)󠁿[]

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#description)
    - [See also](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#see-also)
 * [Parameters](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#changelog)

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

Filters the [wp_get_nav_menus()](https://developer.wordpress.org/reference/functions/wp_get_nav_menus/)
result to ensure the inserted menu object is included, and the deleted one is removed.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#description)󠁿

### 󠀁[See also](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#see-also)󠁿

 * [wp_get_nav_menus()](https://developer.wordpress.org/reference/functions/wp_get_nav_menus/)

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

 `$menus`[WP_Term](https://developer.wordpress.org/reference/classes/wp_term/)[]
required

An array of menu objects.

`$args`arrayrequired

An array of arguments used to retrieve menu objects.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#return)󠁿

 [WP_Term](https://developer.wordpress.org/reference/classes/wp_term/)[] Array of
menu objects.

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

    ```php
    public function filter_wp_get_nav_menus( $menus, $args ) {
    	if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
    		return $menus;
    	}

    	$setting_value = $this->value();
    	$is_delete     = ( false === $setting_value );
    	$index         = -1;

    	// Find the existing menu item's position in the list.
    	foreach ( $menus as $i => $menu ) {
    		if ( (int) $this->term_id === (int) $menu->term_id || (int) $this->previous_term_id === (int) $menu->term_id ) {
    			$index = $i;
    			break;
    		}
    	}

    	if ( $is_delete ) {
    		// Handle deleted menu by removing it from the list.
    		if ( -1 !== $index ) {
    			array_splice( $menus, $index, 1 );
    		}
    	} else {
    		// Handle menus being updated or inserted.
    		$menu_obj = (object) array_merge(
    			array(
    				'term_id'          => $this->term_id,
    				'term_taxonomy_id' => $this->term_id,
    				'slug'             => sanitize_title( $setting_value['name'] ),
    				'count'            => 0,
    				'term_group'       => 0,
    				'taxonomy'         => self::TAXONOMY,
    				'filter'           => 'raw',
    			),
    			$setting_value
    		);

    		array_splice( $menus, $index, ( -1 === $index ? 0 : 1 ), array( $menu_obj ) );
    	}

    	// Make sure the menu objects get re-sorted after an update/insert.
    	if ( ! $is_delete && ! empty( $args['orderby'] ) ) {
    		$menus = wp_list_sort(
    			$menus,
    			array(
    				$args['orderby'] => 'ASC',
    			)
    		);
    	}
    	// @todo Add support for $args['hide_empty'] === true.

    	return $menus;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/customize/class-wp-customize-nav-menu-setting.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/customize/class-wp-customize-nav-menu-setting.php#L240)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/customize/class-wp-customize-nav-menu-setting.php#L240-L292)

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

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

Sorts an array of objects or arrays based on one or more orderby arguments.

  | 
| [WP_Customize_Nav_Menu_Setting::value()](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/value/)`wp-includes/customize/class-wp-customize-nav-menu-setting.php` |

Get the instance data for a given widget setting.

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

Sanitizes a string into a slug, which can be used in URLs or HTML attributes.

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

Retrieves the current site ID.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_customize_nav_menu_setting/filter_wp_get_nav_menus/?output_format=md#)

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

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

## User Contributed Notes

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