Всех с праздниками!
Суть вопроса следующая. Сейчас все отказываются от библиотеки 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 но там есть проблема с мобильными браузерами.