WP_GET_NAV_MENU_OBJECT() – функция возвращает объект навигационного меню

## 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *