## WP_GET_NAV_MENU_OBJECT() │ WP 3.0.0
Функция WP_GET_NAV_MENU_OBJECT() возвращает объект навигационного меню в WordPress.
### Использование
Эта функция используется для получения информации о навигационном меню. Она применяет функции get_term() и get_term_by().
### Время выполнения
- 1 раз — 0.000026 сек (очень быстро)
- 50000 раз — 0.24 сек (очень быстро)
### Хуки функции
- wp_get_nav_menu_object
### Возвращаемое значение
Функция возвращает объект WP_Term при успешном выполнении или false, если параметр $menu не передан или термин не существует.
### Синтаксис
```php
wp_get_nav_menu_object( $menu );
Параметры:
$menu(int|string|WP_Term) — (обязательный) ID меню, его слаг, имя или объект.
Примеры использования
Пример 1: Получение объекта меню
Получение меню по имени, слагу или ID:
// По имени
$menu = wp_get_nav_menu_object( 'wpdocs mainmenu' );
// По слагу
$menu = wp_get_nav_menu_object( 'wpdocs-mainmenu' );
// По ID
$menu_name = 'wpdocs mainmenu';
$menu_obj = get_term_by( 'name', $menu_name, 'nav_menu' );
$menu_id = $menu_obj->term_id;
$menu = wp_get_nav_menu_object( $menu_id );
// По локализации
$menu_name = 'primary';
$locations = get_nav_menu_locations();
$menu_id = $locations[$menu_name];
$menu = wp_get_nav_menu_object( $menu_id );
Пример 2: Получение объекта меню по локации
Предположим, у нас есть имя локации меню: 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] => Panel
[slug] => panel
[term_group] => 0
[term_taxonomy_id] => 701
[taxonomy] => nav_menu
[description] =>
[parent] => 0
[count] => 1
[filter] => raw
)
*/
}
Изменения
Функция была введена в версии 3.0.0.
Исходный код функции
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;
}
/**
* Фильтрует термин навигационного меню, полученный для wp_get_nav_menu_object().
*
* @param WP_Term|false $menu_obj Термин из таксономии nav_menu или false, если ничего не найдено.
* @param int|string|WP_Term $menu ID меню, слаг, имя или объект, переданный в wp_get_nav_menu_object().
*/
return apply_filters( 'wp_get_nav_menu_object', $menu_obj, $menu );
}
Связанные функции
_wp_menu_item_classes_by_context()get_nav_menu_locations()has_nav_menu()is_nav_menu()register_nav_menu()register_nav_menus()unregister_nav_menu()Walker_Nav_Menu()wp_get_nav_menu_items()wp_get_nav_menu_name()wp_get_nav_menus()wp_nav_menu()