wp_get_nav_menu_object() — возвращает объект меню

Кстати! Про то, как кодить меню в WordPress, у меня на сайте есть видеоурок.

Возможно вы знаете, что каждое созданное меню в WordPress является элементом таксономии nav_menu. Функция wp_get_nav_menu_object() — это ни что иное, как совокупность функций get_term() и get_term_by().

wp_get_nav_menu_object( $menu )
$menu
(строка) ID, ярлык или название меню.

В случае успеха функция возвращает объект меню, в случае неудачи — логическое false. Вот результат действия кода print_r( wp_get_nav_menu_object( 381 ) ); для моего меню в шапке:

stdClass Object
(
    [term_id] => 381
    [name] => Меню для шапки
    [slug] => %d0%bc%d0%b5%d0%bd%d1%8e-%d0%b4%d0%bb%d1%8f-%d1%88%d0%b0%d0%bf%d0%ba%d0%b8
    [term_group] => 0
    [term_order] => 0
    [term_icon] => 
    [term_taxonomy_id] => 387
    [taxonomy] => nav_menu
    [description] => 
    [parent] => 0
    [count] => 11
    [filter] => raw
)

Теперь перейдем к примерам.

Как узнать ID меню

На самом деле тут есть два способа.

Способ 1. Смотрим исходный код

Итак, переходим в админке во Внешний вид > Меню, выбираем нужное нам меню, ID которого требуется узнать, затем заходим в исходный код в браузере (в разных браузерах и ОС это делается по-разному, но скорее всего должно помочь нажатие правой кнопкой мыши где-нибудь в теле веб-страницы).

Открыли код? Теперь ищем невидимое поле с атрибутом name равным menu. Значение атрибута value данного поля и есть ID меню.

ID меню

Способ 3. Определяем ID меню по его имени

Тут уже мы будем использовать функцию wp_get_nav_menu_object(). Допустим, что имя меню у нас «Меню для шапки», тогда:

$menu_object = wp_get_nav_menu_object( 'Меню для шапки' ); 
$menu_id = $menu_object->term_id;

Как узнать ярлык меню

Если известен ID:

$menu_object = wp_get_nav_menu_object( 381 ); 
$menu_slug = $menu_object->slug; // ярлык

Если известно название меню:

$menu_object = wp_get_nav_menu_object( 'Меню для шапки' ); 
$menu_slug = $menu_object->slug;

Как узнать количество элементов в меню

Понятное дело, можно их подсчитать, но я имею ввиду другое. Как получить данное значение в коде, в виде переменной? Вот так:

$menu_object = wp_get_nav_menu_object( 'Меню для шапки' ); // можно указать также ID или ярлык
$menu_count = $menu_object->count; // количество пунктов меню

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 18

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал