Всем привет,
Устанавливал на сайт WP динамическое меню через
wp_nav_menu.
Фильтрами получилось сменить все классы (new):
<ul class="new-class-ul">
<li class="new-class-li">
</li>
<li class="new-class-li">
</li>
<li class="new-class-li">
<ul class="new-class-sub">
<li class="...">
<a class="..."></a>
</li>
<li class="...">
<a class="..."></a>
</li>
</ul>
</li>
</ul>
Вложенные классы в
submenu принимаю классы верхних уровней
li и
a, которые я задавал фильтрами.
Мне их нужно поменять на:
header-submenu__item
header-submenu__link
Код фильтров functions.php:
add_filter( 'nav_menu_item_id', 'filter_menu_item_css_id', 10, 4 );
add_filter( 'nav_menu_css_class', 'filter_nav_menu_css_classes', 10, 4 );
add_filter( 'nav_menu_submenu_css_class', 'filter_nav_menu_submenu_css_class', 10, 3 );
add_filter( 'nav_menu_link_attributes', 'filter_nav_menu_link_attributes', 10, 4 );
// UL
function filter_menu_item_css_id( $menu_id, $item, $args, $depth) {
return $args->theme_location === 'header-menu' ? '' : $menu_id;
}
// LI
function filter_nav_menu_css_classes( $classes, $item, $args, $depth) {
if ($args->theme_location === 'header-menu') {
$classes = [
'header-menu__item'
];
}
return $classes;
}
// SUB-MENU
function filter_nav_menu_submenu_css_class( $classes, $args, $depth) {
if ($args->theme_location === 'header-menu') {
$classes = [
'header-submenu'
];
}
return $classes;
}
// a
function filter_nav_menu_link_attributes( $atts, $item, $args, $depth) {
if ($args->theme_location === 'header-menu') {
$atts['class'] = 'header-menu__link';
}
return $atts;
}
Можно ли написать какой-то ещё фильтр или стоит прибегнуть к волкеру?