Title: WP_HTML_Open_Elements::walk_up
Published: November 8, 2023
Last modified: February 24, 2026

---

# WP_HTML_Open_Elements::walk_up( WP_HTML_Token|null $above_this_node = null )

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#source)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#wp--skip-link--target)

Steps through the stack of open elements, starting with the bottom element (added
last) and walking upwards to the one added first.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#description)󠁿

This generator function is designed to be used inside a “foreach” loop.

Example:

    ```php
    $html = '<em><strong><a>We are here';
    foreach ( $stack->walk_up() as $node ) {
        echo "{$node->node_name} -> ";
    }
    > A -> STRONG -> EM ->
    ```

To start with the first added element and walk towards the bottom, see [WP_HTML_Open_Elements::walk_down()](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_down/).

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#parameters)󠁿

 `$above_this_node`[WP_HTML_Token](https://developer.wordpress.org/reference/classes/wp_html_token/)
|nulloptional

Start traversing above this node, if provided and if the node exists.

Default:`null`

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#source)󠁿

    ```php
     */
    public function walk_up( ?WP_HTML_Token $above_this_node = null ) {
    	$has_found_node = null === $above_this_node;

    	for ( $i = count( $this->stack ) - 1; $i >= 0; $i-- ) {
    		$node = $this->stack[ $i ];

    		if ( ! $has_found_node ) {
    			$has_found_node = $node === $above_this_node;
    			continue;
    		}

    		yield $node;
    	}
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/html-api/class-wp-html-open-elements.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/html-api/class-wp-html-open-elements.php#L648)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/html-api/class-wp-html-open-elements.php#L648-L661)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_html_open_elements/walk_up/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.5.0](https://developer.wordpress.org/reference/since/6.5.0/) | Accepts $above_this_node to start traversal above a given node, if it exists. | 
| [6.4.0](https://developer.wordpress.org/reference/since/6.4.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_html_open_elements%2Fwalk_up%2F)
before being able to contribute a note or feedback.