@victorib_us

Как обработать элементы подменю в wp_nav_menu?

У метода wp_nav_menu есть много полезных параметров чтобы настроить меню так как нужно, обернуть в свои контейнеры и т.д. Но к сожалению у разработчиков не хватило ума пойти дальше обработки родительских элементов, про подменю почему-то забыли и оно выводится в черт знает каком виде типа:
<ul class="sub-menu">
<li id="menu-item-149" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-149">
<div class="btn"><a href="/"><span class="l"></span>Первый элемент<span class="r"></span></a></div>
</li>
<li id="menu-item-150" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-150">
<div class="btn"><a href="/"><span class="l"></span>Второй элемент<span class="r"></span></a></div></li>	
</ul>


Как убрать всю эту порнографию в подменю ? чтобы в итоге получить чистый код в стиле
<ul>
<li><a href="/">Первый элемент</a></li>
<li><a href="/">Второй элемент</a></li>
</ul>
  • Вопрос задан
  • 572 просмотра
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
И меню, и подменю строятся одним и тем же Walker_Nav_Menu. Если вам надо вообще очистить все классы, есть для этого фильтры - например, в nav_menu_item_args вам доступен $item, в котором есть $item->classes. Обнуляйте, если хотите. На этом фильтре можно многое делать с $item, который содержит весь элемент пункта меню. Также есть точечный фильтр именно для классов - nav_menu_css_class. Есть nav_menu_item_id для управления id атрибутом.

Изучите как строится меню в классе class-walker-nav-menu.php, многое прояснится. Если нужна полная свобода и тотальный контроль - просто наследуйте класс и пишите свои методы. Или копипастой из родительского класса и вырезаете все лишнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы