Есть следующий код в
functions.phpadd_filter( 'nav_menu_css_class', 'filter_nav_menu_css_classes', 10, 4 );
function filter_nav_menu_css_classes( $classes, $item, $args, $depth ) {
if ( $args->theme_location === 'header-menu' || $args->theme_location === 'footer-menu' ) {
$classes = [
'navigation__item',
'menu-node--main_lvl_' . ( $depth + 1 )
];
if ( $item->current ) {
$classes[] = 'menu-node--active';
}
}
return $classes;
}
add_filter( 'nav_menu_link_attributes', 'filter_nav_menu_link_attributes', 10, 4 );
function filter_nav_menu_link_attributes( $atts, $item, $args, $depth ) {
if ( $args->theme_location === 'header-menu' || $args->theme_location === 'footer-menu' ) {
$atts['class'] = 'navigation__link ';
if ( $item->current ) {
$atts['class'] .= ' menu-link--active';
}
if ( $item->menu_item_parent !==0 && $depth > 0) {
$atts['class'] .= ' menu-item-parent';
}
}
return $atts;
}
И следующая структура:
Первый пункт меню
- Второй пункт меню (здесь есть класс menu-parent-item, но не должен быть, ведь он не родительский)
- Второй пункт меню (здесь есть класс menu-parent-item, все ок)
- Третий пункт меню (здесь есть класс menu-parent-item, но не должен быть, ведь он не родительский)
- Третий пункт меню (здесь есть класс menu-parent-item, все ок)
- Четвертый пункт меню (здесь есть класс menu-parent-item, но не должен быть, ведь он не родительский)
Как, не прибегая к walker присвоить все родительским пунктам меню необходимый класс. А если пункт меню не родительский, то класс не присваивать?