Как найти произвольное меню

В ходе разработки мне приходится особое внимание обращать на навигацию разрабатываемых сайтов. И не мудрено — при использовании  грамотной навигации сайты индексируются лучше чем без нее. Одно из грамотных решений — использование в различных разделах сайта специализированных  блоков ссылок.

Чаще всего в качестве этих блоков используют результаты программных выборок записей и страниц. Решение простое, но не гибкое. Для более удобной, настраиваемой навигации я обычно использую произвольные меню, создание которых в современном WordPress не вызывает проблем.

Встраивание меню в шаблон также не вызывает проблем. Действительно, достаточно в месте установки меню с помощью параметров соответствующей функции  подробно описать вид  устанавливаемого меню (предварительно зарегистрировав место его установки) и — готово!  Существует также и возможность «показать» меню с помощью стандартного виджета WordPress.

Недавно мне пришлось усложнить такую схему использования меню. Заказчик потребовал показывать для различных рубрик сайта — различные соответствующие меню.  Причем заранее количество и содержание меню заказчик ограничивать не стал.

Как привязать конкретное меню к конкретной рубрике  — я придумал быстро. Достаточно было связать наименование рубрики и наименование меню. Создал контент-менеджер рубрику, создал меню с названием, соответствующим названию рубрик и все, меню можно показывать или использовать его пункты с помощью известных функций WordPress.

За исключением пустяка. Небольшой набор функций, посвященный выводу меню, позволяет работать с ними только когда известен ID меню или в крайнем случае его местоположение (жестко выбранное для меню в настройках). В случае же показа произвольных меню в одном и том же месте, этот механизм пригоден слабо.

Анализ базы данных wordpress, проведенный мною, показал, что любое меню является элементом таксономии под названием ‘nav_menu’. После  этого открытия получить доступ к параметрам меню по его имени оказалось очень простым делом:

$my_menu= get_term_by(‘name’, $men, ‘nav_menu’);

И в переменной $my_menu мы получаем все данные, необходимые для дальнейшей работы с выбранным меню.

Вот, например, как можно получить перечень пунктов меню с помощью стандартной функции WordPress:

$items = wp_get_nav_menu_items( $mymen->term_id, $args );

Дальнейшая обработка меню не представляет никакой сложности.

 

 

 

 

 

 

 

***

Хотите обсудить? Оставьте комментарий