@ashfedor

Как правильно верстать вложенное меню для WordPress?

Всех с праздниками!
Суть вопроса следующая. Сейчас все отказываются от библиотеки jQuery , вот и я решил в новой теме для WordPress отказаться от плагина jQuery menu
И если честно то не могу понять к чему прицепиться чтоб заставить открывать dropdown' вложенное меню
Ну например , поставил фильтр чтоб родителю присваивался класс dropdown'
// добавляем класс для родителя вложенного меню
  add_filter( 'wp_nav_menu_objects', 'css_for_nav_parrent' , 10, 4 );
  function css_for_nav_parrent( $items ){

    foreach( $items as $item ){

      if( __nav_hasSub( $item->ID, $items ) ){
        // все элементы поля "classes" меню, будут совмещены и выведены в атрибут class HTML тега <li>
        $item->classes[] = 'dropdown';
      }

    }

    return $items;
  }

  function __nav_hasSub( $item_id, $items ){

    foreach( $items as $item ){

      if( $item->menu_item_parent && $item->menu_item_parent == $item_id )
        return true;
    }

    return false;
  }

для ul прописал класс .submenu у которого display: none
// Изменяет класс у вложенного ul
add_filter( 'nav_menu_submenu_css_class', 'filter_nav_menu_submenu_css_class', 10, 3 );
function filter_nav_menu_submenu_css_class( $classes, $args, $depth ) {
  if ( $args->theme_location === 'menu-top' ) {
    $classes = [
        'submenu',

    ];
  }

  return $classes;
}


и через js присваиваю класс submenu-active display: block

Разумеется когда одно вложенное меню все супер работает, но если их несколько то проблема.
Можно конечно самому родительскому элементу через админку прописывать свой класс и через него активировать, но понимаю что это костыли. Может кто подскажет как правильно это делать в Вордпрессе?
Может вообще проще через css :hover но там есть проблема с мобильными браузерами.
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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