WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menu_object( object|null $menu_obj, string $menu_id ): object|null

Filters the wp_get_nav_menu_object() result to supply the previewed menu object.

Description

Requesting a nav_menu object by anything but ID is not supported.

See also

Parameters

$menu_objobject|nullrequired
Object returned by wp_get_nav_menu_object() .
$menu_idstringrequired
ID of the nav_menu term. Requests by slug or name will be ignored.

Return

object|null

Source

public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) {
	$ok = (
		get_current_blog_id() === $this->_previewed_blog_id
		&&
		is_int( $menu_id )
		&&
		$menu_id === $this->term_id
	);
	if ( ! $ok ) {
		return $menu_obj;
	}

	$setting_value = $this->value();

	// Handle deleted menus.
	if ( false === $setting_value ) {
		return false;
	}

	// Handle sanitization failure by preventing short-circuiting.
	if ( null === $setting_value ) {
		return $menu_obj;
	}

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

	return $menu_obj;
}

Changelog

VersionDescription
4.3.0Introduced.

User Contributed Notes

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