Using WordPress ‘get_page_hierarchy()’ PHP function

The get_page_hierarchy() WordPress PHP function orders the pages with children under parents in a flat list.

Usage

$page_hierarchy = get_page_hierarchy( $pages, $page_id = 0 );

Parameters

  • $pages (WP_Post): Required. The posts array (passed by reference).
  • $page_id (int): Optional. Parent page ID. Default is 0.

More information

See WordPress Developer Resources: get_page_hierarchy()

Examples

Get Page Hierarchy for All Pages

This example retrieves all pages and generates a page hierarchy.

// Get all pages
$all_pages = get_pages();

// Generate the page hierarchy
$page_hierarchy = get_page_hierarchy($all_pages);

Get Page Hierarchy for Specific Parent Page

This example retrieves all pages and generates a page hierarchy for a specific parent page with ID 5.

// Get all pages
$all_pages = get_pages();

// Generate the page hierarchy for the parent page with ID 5
$page_hierarchy = get_page_hierarchy($all_pages, 5);

Display Page Hierarchy

This example displays the page hierarchy in a simple unordered list.

// Get all pages
$all_pages = get_pages();

// Generate the page hierarchy
$page_hierarchy = get_page_hierarchy($all_pages);

// Display the page hierarchy
echo '<ul>';
foreach ($page_hierarchy as $page_id => $page_title) {
    echo '<li>' . $page_title . '</li>';
}
echo '</ul>';

This example displays the page hierarchy with links to each page.

// Get all pages
$all_pages = get_pages();

// Generate the page hierarchy
$page_hierarchy = get_page_hierarchy($all_pages);

// Display the page hierarchy with links
echo '<ul>';
foreach ($page_hierarchy as $page_id => $page_title) {
    $page_link = get_permalink($page_id);
    echo '<li><a href="' . $page_link . '">' . $page_title . '</a></li>';
}
echo '</ul>';

Get Page Hierarchy and Exclude a Page

This example retrieves all pages, excluding a page with ID 3, and generates a page hierarchy.

// Get all pages excluding a page with ID 3
$all_pages = get_pages(array('exclude' => array(3)));

// Generate the page hierarchy
$page_hierarchy = get_page_hierarchy($all_pages);