nav_menu_submenu_css_class
Позволяет изменить CSS классы, добавленные к вложенным ul элементам (спискам меню). По умолчанию добавляется класс sub-menu
.
Пример меню с двумя вложенными ul элементами.
Структура:
- Овощи
- Моя статья (вложенный элемент)
- Ещё статья (вложенный элемент)
- Моя статья (вложенный элемент)
Вёрстка:
<div class="menu-vtoroe-menyu-container"> <ul id="menu-vtoroe-menyu" class="menu"> <li id="menu-item-317" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-317"> <a href="http://wp-test.ru/category/ovoshhi">Овощи</a> <ul class="sub-menu"> <li id="menu-item-322" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-has-children menu-item-322"> <a href="http://wp-test.ru/moya-statya">Моя статья</a> <ul class="sub-menu"> <li id="menu-item-321" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-321"> <a href="http://wp-test.ru/eshhyo-statya">Ещё статья</a> </li> </ul> </li> </ul> </li> </ul> </div>
Использование
add_filter( 'nav_menu_submenu_css_class', 'wp_kama_nav_menu_submenu_css_class_filter', 10, 3 ); /** * Function for `nav_menu_submenu_css_class` filter-hook. * * @param string[] $classes Array of the CSS classes that are applied to the menu `<ul>` element. * @param stdClass $args An object of `wp_nav_menu()` arguments. * @param int $depth Depth of menu item. Used for padding. * * @return string[] */ function wp_kama_nav_menu_submenu_css_class_filter( $classes, $args, $depth ){ // filter... return $classes; }
- $classes(массив)
Классы CSS, которые применяются к вложенным ul элементам. Пример:
Array( [1] => sub-menu )
- $args(stdClass)
Объект с аргументами из функции wp_nav_menu(). Пример:
- $depth(число)
- Уровень пункта меню. Добавлен в версии 4.1.0. Используется для отступов. Верхние пункты меню имеют $depth = 0, вложенные в них $depth = 1 и так далее.
Примеры
#1 Удалить все css классы
add_filter( 'nav_menu_submenu_css_class', 'change_wp_nav_menu', 10, 3 ); function change_wp_nav_menu( $classes, $args, $depth ) { return []; }
#2 Добавить css классы
add_filter( 'nav_menu_submenu_css_class', 'change_wp_nav_menu', 10, 3 ); // 1 вариант - добавить у всех меню function change_wp_nav_menu( $classes, $args, $depth ) { $classes[] = 'my-css-1'; $classes[] = 'my-css-2'; return $classes; } // 2 вариант - только у меню, прикрепленное к области меню header-menu function change_wp_nav_menu( $classes, $args, $depth ) { if ( $args->theme_location == 'header-menu' ) { $classes[] = 'my-css-1'; $classes[] = 'my-css-2'; } return $classes; }
#3 Изменить css класс(ы)
add_filter( 'nav_menu_submenu_css_class', 'change_wp_nav_menu', 10, 3 ); function change_wp_nav_menu( $classes, $args, $depth ) { foreach ( $classes as $key => $class ) { if ( $class == 'sub-menu' ) { $classes[ $key ] = 'my-sub-menu'; } } return $classes; }
Список изменений
С версии 4.8.0 | Введена. |
Где вызывается хук
nav_menu_submenu_css_class
wp-includes/class-walker-nav-menu.php 92
$class_names = implode( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) );