Walker_Nav_Menu::start_lvl( string $output, int $depth, stdClass $args = null )

Starts the list before the elements are added.

Description

See also

Parameters

$outputstringrequired
Used to append additional content (passed by reference).
$depthintrequired
Depth of menu item. Used for padding.
$argsstdClassoptional
An object of wp_nav_menu() arguments.
More Arguments from wp_nav_menu( … $args )Array of nav menu arguments.
  • menu int|string|WP_Term
    Desired menu. Accepts a menu ID, slug, name, or object.
  • menu_class string
    CSS class to use for the ul element which forms the menu.
    Default 'menu'.
  • menu_id string
    The ID that is applied to the ul element which forms the menu.
    Default is the menu slug, incremented.
  • container string
    Whether to wrap the ul, and what to wrap it with.
    Default 'div'.
  • container_class string
    Class that is applied to the container.
    Default ‘menu-{menu slug}-container’.
  • container_id string
    The ID that is applied to the container.
  • container_aria_label string
    The aria-label attribute that is applied to the container when it’s a nav element.
  • fallback_cb callable|false
    If the menu doesn’t exist, a callback function will fire.
    Default is 'wp_page_menu'. Set to false for no fallback.
  • before string
    Text before the link markup.
  • after string
    Text after the link markup.
  • link_before string
    Text before the link text.
  • link_after string
    Text after the link text.
  • echo bool
    Whether to echo the menu or return it. Default true.
  • depth int
    How many levels of the hierarchy are to be included.
    0 means all. Default 0.
    Default 0.
  • walker object
    Instance of a custom walker class.
  • theme_location string
    Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user.
  • items_wrap string
    How the list items should be wrapped. Uses printf() format with numbered placeholders. Default is a ul with an id and class.
  • item_spacing string
    Whether to preserve whitespace within the menu’s HTML.
    Accepts 'preserve' or 'discard'. Default 'preserve'.

Default:null

Source

public function start_lvl( &$output, $depth = 0, $args = null ) {
	if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
		$t = '';
		$n = '';
	} else {
		$t = "\t";
		$n = "\n";
	}
	$indent = str_repeat( $t, $depth );

	// Default class.
	$classes = array( 'sub-menu' );

	/**
	 * Filters the CSS class(es) applied to a menu list element.
	 *
	 * @since 4.8.0
	 *
	 * @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.
	 */
	$class_names = implode( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) );

	$atts          = array();
	$atts['class'] = ! empty( $class_names ) ? $class_names : '';

	/**
	 * Filters the HTML attributes applied to a menu list element.
	 *
	 * @since 6.3.0
	 *
	 * @param array $atts {
	 *     The HTML attributes applied to the `<ul>` element, empty strings are ignored.
	 *
	 *     @type string $class    HTML CSS class attribute.
	 * }
	 * @param stdClass $args      An object of `wp_nav_menu()` arguments.
	 * @param int      $depth     Depth of menu item. Used for padding.
	 */
	$atts       = apply_filters( 'nav_menu_submenu_attributes', $atts, $args, $depth );
	$attributes = $this->build_atts( $atts );

	$output .= "{$n}{$indent}<ul{$attributes}>{$n}";
}

Hooks

apply_filters( ‘nav_menu_submenu_attributes’, array $atts, stdClass $args, int $depth )

Filters the HTML attributes applied to a menu list element.

apply_filters( ‘nav_menu_submenu_css_class’, string[] $classes, stdClass $args, int $depth )

Filters the CSS class(es) applied to a menu list element.

Changelog

VersionDescription
3.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.