Fetfurmoz
@Fetfurmoz
frontend

Wordpress меню активный класс для подменю?

День добрый.

Wordpress есть меню, при наведении появляется подменю первое и там есть активный класс ( current-menu-item ) и оно выделено, но когда я перехожу в следующее подменю то выделение переходит на это подменю, а выделение в первом подменю пропадает, и когда человек наводит на основное меню то выделения не видно, оно только во втором подменю.

Как решить данную проблему ? То есть выделение показывает только активного второго подменю, а первого не показывает.

61fcf7dbc7282649230944.png
61fcf7e35f5a4639337881.png
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
pLavrenov
@pLavrenov
Разработка сайтов
Хуки меню почти на все случаи.

wp_nav_menu([
    'theme_location' => 'top_left',
    'container'=> false,
    'items_wrap' => '<ul class="nav navbar-nav %2$s">%3$s</ul>',
    'menu_class' => '',
    'ul_class' => 'navbar-nav',
    'ul_child_class' => 'dropdown-menu',
    'li_class' => 'nav-item',
    'li_child_class' => 'nav-item',
    'a_class' => 'nav-link',
    'a_child_class' => 'nav-link',
]);


## Добавление стилей для стандартного меню
add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3);
function add_menu_list_item_class($classes, $item, $args) {
    if (property_exists($args, 'li_class') && !$item->menu_item_parent) {
        $classes[] = $args->li_class;
    }
    if (property_exists($args, 'li_child_class') && $item->menu_item_parent) {
        $classes[] = $args->li_child_class;
    }
    return $classes;
}

add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 );
function add_menu_link_class( $atts, $item, $args ) {
    if ( strpos( $atts['href'], home_url() ) === false ) {
        $atts['target'] = '_blank';
    }
    if (property_exists($args, 'a_class') && !$item->menu_item_parent) {
        $atts['class'] = $args->a_class;
    }
    if (property_exists($args, 'a_child_class') && $item->menu_item_parent) {
        $atts['class'] = $args->a_child_class;
    }
    return $atts;
}

add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class', 1, 3);
function my_nav_menu_submenu_css_class($classes, $args, $depth) {
    if (property_exists($args, 'ul_child_class')) {
        $classes[] = $args->ul_child_class;
    }
    return $classes;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы