Возможно вы знаете, что каждое созданное меню в 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
)
|
Теперь перейдем к примерам.
На самом деле тут есть два способа.
Способ 1. Смотрим исходный код
Итак, переходим в админке во Внешний вид > Меню, выбираем нужное нам меню, ID которого требуется узнать, затем заходим в исходный код в браузере (в разных браузерах и ОС это делается по-разному, но скорее всего должно помочь нажатие правой кнопкой мыши где-нибудь в теле веб-страницы).
Открыли код? Теперь ищем невидимое поле с атрибутом name равным menu. Значение атрибута value данного поля и есть 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; // количество пунктов меню |
Источник: misha.blog