Libiros
@Libiros
Frontend developer

Как присвоить родительским элементам классы в меню wordpress?

Есть следующий код в functions.php
add_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 присвоить все родительским пунктам меню необходимый класс. А если пункт меню не родительский, то класс не присваивать?
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
tuxfighter
@tuxfighter
троль
Вот вы любите на пустом месте велосипеды городить.....
1GSUVFx.jpg
Ответ написан
Ваш ответ на вопрос

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

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