Кстати! Про то, как кодить меню в WordPress, у меня на сайте есть видеоурок.
Возможно вы знаете, что каждое созданное меню в WordPress является элементом таксономии nav_menu
. Функция wp_get_nav_menu_object()
— это ни что иное, как совокупность функций get_term() и get_term_by().
wp_get_nav_menu_object( $menu )
В случае успеха функция возвращает объект меню, в случае неудачи — логическое 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 которого требуется узнать, затем заходим в исходный код в браузере (в разных браузерах и ОС это делается по-разному, но скорее всего должно помочь нажатие правой кнопкой мыши где-нибудь в теле веб-страницы).
Открыли код? Теперь ищем невидимое поле с атрибутом 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; // количество пунктов меню
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Здравствуйте Михаил у меня следующий вопрос Возможно ли как то скрыть один из пунктов меню. Типа если пользователь не залогинен он не видит какой то пункт меню? Или надо только с подменной меню полностью делать для зарегистрированных и не для зарегистрированных, а потом условия?
Здравствуйте, вариантов несколько:
Условие проверки зарегистрированного пользователя подсказать?
Да Михаил если можно подскажите, как это можно реализовать через wp_get_nav_menu_items(), ? Скажите Михаил, а вам возможно потом еще один вопрос задать если вы знакомы с api WooCommerce? Просто вы в моих глазах один из ни многих, кто помогает людям с вопросами. А на всяких гламурных форумах ведать "взападло" ответить мега супер челам. Либо просто молчат либо пишут, что то вроде да тут все просто сам не знаешь, что ли. Нет знаю, так просто вопрос задаю. Ну это так полимика. Да и на самом деле информации очень мало стоящей в интернете. Всяких блогов много подобных вашему, но там так один рерайт.
А Вы я вижу, понимайте, что пишите .
Спасибо! Если нравится мой блог, буду благодарен, если заюзаете кнопки соц сетей вверху :)
В общем используйте последний пример тогда с поста про wp_get_nav_menu_items().
Для того, чтобы проверить, зарегистрирован ли пользователь, используйте условие:
если подскажете ответ на вопрос то не только заюзаю но и присоеденюсь с радостью
можно ли так делать на странице и не будет ли поисковик считать что у меня на странице два заголовка х1
Партнёрам
Сотрудничать с нами – выгодно
ну и что произойдёт если вот так сделать
а то нигде не могу найти ответа
SEO-профи я себя не считаю, но думаю, что в этом ничего такого.
Через CSS кстати проще простого будет скрыть, если вам такой способ подойдёт могу подсказать уже сразу готовый код.
так всё таки это два х1 и что тут делать?
Если не сложно, то подскажите, а то у меня решение, через jquery только есть я делал, так
Скажите Михаил, а вам возможно потом еще один вопрос задать если вы знакомы с api WooCommerce?
C WooComerce как-то давно работал. Сейчас уже всё позабыл :)
Спасибо вам Михаил !
Миш, а не подскажешь, как вытащить из БД строки таксономий меню?
nav_menu_item
- это тип поста) Или я что-то не так понял?т.е. если сделать экспорт в БД post_type = nav_menu_item и импортировать эти строки в другую БД, то на сайте появятся меню?
не пробовал :)
Миш, я немного туплю. А как получить количество количество только родительских пунктов без учета субменю?
Привет . Почитал - интересно! Вот такой вопрос: как узнать ID страницы на которую ссылается данный пункт меню ?
Привет!
Думаю вам сюда.