wpseek.com
Eine auf WordPress spezialiserte Suchmaschine für Entwickler und Theme-Autoren



wp_nav_menu_remove_menu_item_has_children_class › WordPress Function

Seit6.2.0
Veraltetn/v
wp_nav_menu_remove_menu_item_has_children_class ( $classes, $menu_item, $args = false, $depth = false )
Parameter: (4)
  • (string[]) $classes Array of the CSS classes that are applied to the menu item's `<li>` element.
    Erforderlich: Ja
  • (WP_Post) $menu_item The current menu item object.
    Erforderlich: Ja
  • (stdClass|false) $args An object of wp_nav_menu() arguments. Default false ($args unspecified when filter is called).
    Erforderlich: Nein
    Standard: false
  • (int|false) $depth Depth of menu item. Default false ($depth unspecified when filter is called).
    Erforderlich: Nein
    Standard: false
Siehe:
Gibt zurück:
  • (string[]) Modified nav menu classes.
Definiert in:
Codex:

Remove the `menu-item-has-children` class from bottom level menu items.

This runs on the {@see '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.


Quellcode

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;
}