Walker::display_element( object $element, array $children_elements, int $max_depth, int $depth, array $args, string $output )

Traverses elements to create list from elements.


Description

Display one element if the element doesn’t have any children otherwise, display the element and its children. Will only traverse up to the max depth and no ignore elements under that depth. It is possible to set the max depth to include all depths, see walk() method.

This method should not be called directly, use the walk() method instead.


Top ↑

Parameters

$element object Required
Data object.
$children_elements array Required
List of elements to continue traversing (passed by reference).
$max_depth int Required
Max depth to traverse.
$depth int Required
Depth of current element.
$args array Required
An array of arguments.
$output string Required
Used to append additional content (passed by reference).

Top ↑

Source

File: wp-includes/class-wp-walker.php. View all references

public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
	if ( ! $element ) {
		return;
	}

	$id_field = $this->db_fields['id'];
	$id       = $element->$id_field;

	// Display this element.
	$this->has_children = ! empty( $children_elements[ $id ] );
	if ( isset( $args[0] ) && is_array( $args[0] ) ) {
		$args[0]['has_children'] = $this->has_children; // Back-compat.
	}

	$this->start_el( $output, $element, $depth, ...array_values( $args ) );

	// Descend only when the depth is right and there are children for this element.
	if ( ( 0 == $max_depth || $max_depth > $depth + 1 ) && isset( $children_elements[ $id ] ) ) {

		foreach ( $children_elements[ $id ] as $child ) {

			if ( ! isset( $newlevel ) ) {
				$newlevel = true;
				// Start the child delimiter.
				$this->start_lvl( $output, $depth, ...array_values( $args ) );
			}
			$this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
		}
		unset( $children_elements[ $id ] );
	}

	if ( isset( $newlevel ) && $newlevel ) {
		// End the child delimiter.
		$this->end_lvl( $output, $depth, ...array_values( $args ) );
	}

	// End this element.
	$this->end_el( $output, $element, $depth, ...array_values( $args ) );
}


Top ↑

Changelog

Changelog
Version Description
2.5.0 Introduced.

Top ↑

User Contributed Notes

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