Возможно вы знаете, что каждое созданное меню в 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