функция since 6.2.0

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.

See also

Параметры

$classes string[] обязательный
Массив CSS-классов, применяемых к элементу
  • пункта меню.
  • $menu_item WP_Post обязательный
    Объект текущего пункта меню.
    $args stdClass|false необязательный = false
    Объект аргументов wp_nav_menu(). Значение по умолчанию false ($args не задан при вызове фильтра).
    $depth int|false необязательный = false
    Уровень вложенности пункта меню. Значение по умолчанию false ($depth не задан при вызове фильтра).

    Возвращаемое значение

    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.

    Что будем искать? Например,Продвижение

    Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.