WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_nav_menu_object()WP 3.0.0

Получает объект меню WordPress. Возвращает только объект самого меню без элементов в нем.

Чтобы получить пункты (элементы) меню, используйте функцию wp_get_nav_menu_items()

Работает на основе: get_term(), get_term_by()
Основа для: is_nav_menu(), wp_get_nav_menu_items()
1 раз — 0.000026 сек (очень быстро) | 50000 раз — 0.24 сек (очень быстро)
Хуки из функции

Возвращает

WP_Term|false. False если не удалось получить меню по параметру $menu меню (термина) не существует.

Возвращаемый объект представляет из себя объект WP_Term элемента таксономии, потому что меню хранятся как элементы таксономии nav_menu.

stdClass Object
(
	[term_id] => 693
	[name] => Панель
	[slug] => panel
	[term_group] => 0
	[term_taxonomy_id] => 701
	[taxonomy] => nav_menu
	[description] =>
	[parent] => 0
	[count] => 1
	[filter] => raw
)

Использование

wp_get_nav_menu_object( $menu );
$menu(число/строка/WP_Term) (обязательный)

ID, ярлык или название меню.

Можно передать сразу объект меню, в этом случает он будет пропущен через фильтр wp_get_nav_menu_object и вернется.

Примеры

1

#1 Получим объект меню

Допустим, у нас есть название расположения меню: my_menu_location зарегистрированное с помощью register_nav_menu(). И мы создали меню в админке и прикрепили его к этому расположению. Тогда:

$locations = get_nav_menu_locations();

if( isset( $locations['my_menu_location'] ) ){
	$items = wp_get_nav_menu_object( $locations['my_menu_location'] );
	print_r( $items );

	/* выведет
	stdClass Object
	(
		[term_id] => 693
		[name] => Панель
		[slug] => panel
		[term_group] => 0
		[term_taxonomy_id] => 701
		[taxonomy] => nav_menu
		[description] => 
		[parent] => 0
		[count] => 1
		[filter] => raw
	)
	*/  
}

Список изменений

С версии 3.0.0 Введена.

Код wp_get_nav_menu_object() WP 6.5.2

function wp_get_nav_menu_object( $menu ) {
	$menu_obj = false;

	if ( is_object( $menu ) ) {
		$menu_obj = $menu;
	}

	if ( $menu && ! $menu_obj ) {
		$menu_obj = get_term( $menu, 'nav_menu' );

		if ( ! $menu_obj ) {
			$menu_obj = get_term_by( 'slug', $menu, 'nav_menu' );
		}

		if ( ! $menu_obj ) {
			$menu_obj = get_term_by( 'name', $menu, 'nav_menu' );
		}
	}

	if ( ! $menu_obj || is_wp_error( $menu_obj ) ) {
		$menu_obj = false;
	}

	/**
	 * Filters the nav_menu term retrieved for wp_get_nav_menu_object().
	 *
	 * @since 4.3.0
	 *
	 * @param WP_Term|false      $menu_obj Term from nav_menu taxonomy, or false if nothing had been found.
	 * @param int|string|WP_Term $menu     The menu ID, slug, name, or object passed to wp_get_nav_menu_object().
	 */
	return apply_filters( 'wp_get_nav_menu_object', $menu_obj, $menu );
}
2 комментария
    Войти