wp_nav_menu_remove_menu_item_has_children_class

函数
wp_nav_menu_remove_menu_item_has_children_class ( $classes, $menu_item, $args = false, $depth = false )
参数
  • (string[]) $classes Array of the CSS classes that are applied to the menu item's `<li>` element.
    Required:
  • (WP_Post) $menu_item The current menu item object.
    Required:
  • (stdClass|false) $args An object of wp_nav_menu() arguments. Default false ($args unspecified when filter is called).
    Required:
    Default: false
  • (int|false) $depth Depth of menu item. Default false ($depth unspecified when filter is called).
    Required:
    Default: false
返回值
  • (string[]) Modified nav menu classes.
相关
  • https://core.trac.wordpress.org/ticket/56926.
定义位置
相关方法
wp_nav_menu_update_menu_itemswp_nav_menu_post_type_meta_boxeswp_nav_menu_item_link_meta_boxwp_nav_menu_item_post_type_meta_boxwp_nav_menu_taxonomy_meta_boxes
引入
6.2.0
弃用
-

wp_nav_menu_remove_menu_item_has_children_class: 这是一个过滤钩子,允许在菜单项有子项的情况下修改添加到菜单项的HTML输出的CSS类。默认情况下,WordPress将menu-item-has-children类添加到菜单项的li元素中。这个钩子可以用来删除或修改这个类。

从底层菜单项中移除`menu-item-has-children`类。

这在{@see ‘nav_menu_css_class’}过滤器上运行。$args和$depth参数是在WordPress 3.0.0中最初引入过滤器后添加的,所以这需要允许在没有它们的情况下调用过滤器。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
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; }
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;
}

常见问题

FAQs
查看更多 >