wp_nav_menu_remove_menu_item_has_children_class()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
wp_nav_menu_remove_menu_item_has_children_class( string[] $classes, WP_Post $menu_item, stdClass|false $args = false, int|false $depth = false ): string[]
Описание
Это выполняется на хук-фильтре «nav_menu_css_class». Параметры $args и $depth были добавлены уже после того, как фильтр впервые появился в WordPress 3.0.0, поэтому нужно учитывать случаи, когда фильтр вызывается без них.
См. также https://core.trac.wordpress.org/ticket/56926
Оригинал (английский)
This runs on the ‘nav_menu_css_class’ filter. The $args and $depth parameters were added after the filter was originally introduced in WordPress 3.0.0 so this needs to allow for cases in which the filter is called without them.
Параметры
$classes
string[]
обязательный
$menu_item
WP_Post
обязательный
$args
stdClass|false
необязательный
= false
$depth
int|false
необязательный
= false
Возвращаемое значение
string[]
Исходный код
wp-includes/nav-menu-template.php:664
function wp_nav_menu_remove_menu_item_has_children_class( $classes, $menu_item, $args = false, $depth = false ) {
/*
* Account for the filter being called without the $args or $depth parameters.
*
* This occurs when a theme uses a custom walker calling the `nav_menu_css_class`
* filter using the legacy formats prior to the introduction of the $args and
* $depth parameters.
*
* As both of these parameters are required for this function to determine
* both the current and maximum depth of the menu tree, the function does not
* attempt to remove the `menu-item-has-children` class if these parameters
* are not set.
*/
if ( false === $depth || false === $args ) {
return $classes;
}
// Max-depth is 1-based.
$max_depth = isset( $args->depth ) ? (int) $args->depth : 0;
// Depth is 0-based so needs to be increased by one.
$depth = $depth + 1;
// Complete menu tree is displayed.
if ( 0 === $max_depth ) {
return $classes;
}
/*
* Remove the `menu-item-has-children` class from bottom level menu items.
* -1 is used to display all menu items in one level so the class should
* be removed from all menu items.
*/
if ( -1 === $max_depth || $depth >= $max_depth ) {
$classes = array_diff( $classes, array( 'menu-item-has-children' ) );
}
return $classes;
}
История изменений
| Версия | Описание |
|---|---|
| 6.2.0 | Introduced. |

