get_page_hierarchy

The timeline below displays how wordpress function get_page_hierarchy has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Orders the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param WP_Post[] $pages   Posts array (passed by reference).
 * @param int       $page_id Optional. Parent page ID. Default 0.
 * @return string[] Array of post names keyed by ID and arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        return array();
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = (int) $p->post_parent;
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 5.6

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param WP_Post[] $pages   Posts array (passed by reference).
 * @param int       $page_id Optional. Parent page ID. Default 0.
 * @return string[] Array of post names keyed by ID and arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        return array();
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = (int) $p->post_parent;
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 5.4

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param WP_Post[] $pages   Posts array (passed by reference).
 * @param int       $page_id Optional. Parent page ID. Default 0.
 * @return string[] Array of post names keyed by ID and arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        return array();
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = intval($p->post_parent);
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 4.9

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param array $pages   Posts array (passed by reference).
 * @param int   $page_id Optional. Parent page ID. Default 0.
 * @return array A list arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        return array();
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = intval($p->post_parent);
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 4.3

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param array $pages   Posts array, passed by reference.
 * @param int   $page_id Optional. Parent page ID. Default 0.
 * @return array A list arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        return array();
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = intval($p->post_parent);
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 4.0

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param array $pages   Posts array, passed by reference.
 * @param int   $page_id Optional. Parent page ID. Default 0.
 * @return array A list arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        $result = array();
        return $result;
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = intval($p->post_parent);
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}

WordPress Version: 3.7

/**
 * Order the pages with children under parents in a flat list.
 *
 * It uses auxiliary structure to hold parent-children relationships and
 * runs in O(N) complexity
 *
 * @since 2.0.0
 *
 * @param array $pages Posts array.
 * @param int $page_id Parent page ID.
 * @return array A list arranged by hierarchy. Children immediately follow their parents.
 */
function get_page_hierarchy(&$pages, $page_id = 0)
{
    if (empty($pages)) {
        $result = array();
        return $result;
    }
    $children = array();
    foreach ((array) $pages as $p) {
        $parent_id = intval($p->post_parent);
        $children[$parent_id][] = $p;
    }
    $result = array();
    _page_traverse_name($page_id, $children, $result);
    return $result;
}