wp_get_nav_menu_object

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

Чтобы получить пункты (элементы) меню, используйте функцию wp_get_nav_menu_items()
✈ 1 раз = 0.000026с = очень быстро | 50000 раз = 0.24с = очень быстро
Хуки из функции:
wp_get_nav_menu_object
Возвращает

Объект/false. False если не удалось получить меню по параметру $menu меню (термина) не существует.

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

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

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

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

Примеры

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

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

$locations = get_nav_menu_locations();
$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
)
*/

Код из


wp-includes/nav-menu.php

WP 4.7.2

<?php
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 object|false $menu_obj Term from nav_menu taxonomy, or false if nothing had been found.
	 * @param string       $menu     The menu ID, slug, or name passed to wp_get_nav_menu_object().
	 */
	return apply_filters( 'wp_get_nav_menu_object', $menu_obj, $menu );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *