Walker::display_element()
最后更新于:2021-11-26 05:16:20
Walker::display_element( object$element, array$children_elements, int$max_depth, int$depth, array$args, string$output)Traverse elements to create list from elements.
参数
- $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).
源文件
文件: gc-includes/class-gc-walker.php
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 ) );
}