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і повернеться.

Приклади

0

#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.0.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 nav_menu term retrieved for wp_get_nav_menu_object().
	 *
	 * @ Since 4.3.0
	 *
	 * @param WP_Term|false $menu_obj Терм з taxonomy nav_menu, або false, якщо не буде зроблено.
	 * @param int|string|WP_Term $menu У меню ID, slug, name, або object passed to wp_get_nav_menu_object().
	 */
	return apply_filters( 'wp_get_nav_menu_object', $menu_obj, $menu );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *