Проверьте, есть ли в пунктах меню wp nav подменю
Я хочу вывести следующую разметку для меню через wp_nav_menu,
<ul>
<li><a href="/">Home</a></li>
<li>
<a href="/" aria-haspopup="true">Blog</a>
<ul>
<li><a href="/">Design</a></li>
<li><a href="/">HTML</a></li>
<li><a href="/">CSS</a></li>
<li><a href="/">JavaScript</a></li>
</ul>
</li>
</ul>
Пункты меню могут иметь подменю - в этом случае ссылка верхнего уровня должна быть отформатирована как в приведенном выше примере. Я пробовал разные решения, изучая кодекс, но безуспешно. Похоже, мне нужно будет создать для этого ходок, если только я не захочу добавить кучу запросов (запуск циклов подменю внутри основного цикла). Но поскольку это такое небольшое изменение, не было бы можно ли вместо этого добавить крючок фильтра в вывод меню?
1 answers
Если я правильно понимаю, вы хотите, чтобы ссылки с подменю имели атрибут aria-haspopup
. Если это правильно, вы должны быть в состоянии сделать это с помощью фильтра nav_menu_link_attributes
(WP 3.6 и выше). Вы также можете обойти необходимость написания пользовательского ходока, чтобы проверить, есть ли у элемента дочерние элементы, проверив его классы css в фильтре.
add_filter( 'nav_menu_link_attributes', 'wpse154485_add_aria_haspopup_atts', 10, 3 );
function wpse154485_add_aria_haspopup_atts( $atts, $item, $args ) {
if (in_array('menu-item-has-children', $item->classes)) {
$atts['aria-haspopup'] = 'true';
}
return $atts;
}