Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To display child pages under a parent page in WordPress, add a Page List block and select the parent page in the block settings. If you are editing a classic theme or a PHP template, use wp_list_pages(): its child_of argument includes descendants at every level, while parent limits the list to direct children.

First, assign the pages to a parent

A child page is a WordPress Page whose parent is another Page. The relationship is set in the editor’s Page Attributes panel using the Parent selector; it organizes Pages into a hierarchy, but does not automatically add a child-page list to the parent’s visible content. See WordPress documentation on Pages.

  1. Open the page you want to make a child in the WordPress editor.

  2. In the Page settings, find Page Attributes and choose the intended parent in the Parent field. The panel’s location can vary by editor or theme.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  3. Save or update the page. Repeat for each child page.

To control a deliberate sequence, set the pages’ Order values in Page Attributes. This is distinct from the parent relationship: Parent establishes hierarchy; Order determines sequence when the listing is sorted by menu order.

Use the Page List block for a no-code list

For most editors, the core Page List block is the simplest option. Insert it into the parent page, a post, or a sidebar, then select the parent page in the block settings. The block displays that parent’s child pages without PHP. WordPress documents the block in its Page List block guide.

  1. Edit the page or template area where the list should appear.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  2. Insert a Page List block.

  3. Open the block settings and choose the parent page whose children should appear.

  4. Save and preview the page to confirm the selection and presentation.

This is appropriate when a standard page list meets the design need. If you need custom markup, conditional output, or a specific sorting rule, use the PHP approach below.

Use wp_list_pages() in a theme or template

wp_list_pages() is WordPress’s core function for rendering Pages as an unordered list. The key choice is scope: child_of includes child pages and deeper descendants; parent returns only direct children. The developer reference documents both arguments at wp_list_pages() and the parent query argument.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

List children and deeper descendants

Use this when the navigation should include the full branch below a parent. In a template where the current page is the intended parent:

<?php
wp_list_pages([
    'child_of'   => get_the_ID(),
    'title_li'   => '',
    'sort_column' => 'menu_order, post_title',
]);
?>

The function generates list-item markup, including the surrounding list structure when used in its standard context. title_li => '' removes the default “Pages” heading. The sort setting follows the editor’s Order values and uses the title as a tie-breaker.

List direct children only

Use parent when grandchildren and other deeper pages should not appear:

<?php
wp_list_pages([
    'parent'      => get_the_ID(),
    'title_li'    => '',
    'sort_column' => 'menu_order, post_title',
]);
?>

If the code is not running on the parent page, replace get_the_ID() with the parent Page’s numeric ID. The PHP snippet belongs in a theme or template context; do not paste PHP into the visual page editor.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Print a list only when children exist

To avoid outputting an empty list, request the generated markup as a string and test it before printing:

<?php
$children = wp_list_pages([
    'child_of' => get_the_ID(),
    'title_li' => '',
    'echo'     => 0,
]);

if ($children) {
    echo '<ul>' . $children . '</ul>';
}
?>

Here, echo => 0 returns the markup rather than immediately printing it. Because the snippet supplies its own <ul>, use this conditional pattern as shown rather than adding another list wrapper around the function’s normal output.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose a shortcode or plugin for reusable layouts

If the block is not available in your editing context or you want a reusable shortcode, WordPress.com documents [list-pages], [sibling-pages], and [child-pages]. Some plugin-enabled WordPress.com sites may require the Display Posts Shortcode plugin for shortcode use; check the relevant WordPress.com list-pages shortcode guidance.

On self-hosted WordPress, plugins can provide additional layouts or insertion methods. The WordPress.org listing for CC Child Pages describes a shortcode, block, and Elementor widget for child-page lists or grids. Page-list offers [pagelist], [subpages], and [siblings] shortcodes built around wp_list_pages(). Confirm a plugin’s current compatibility and features on its listing before installing it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set the order and match the method to the job

For an editor-controlled sequence, assign Order values to the Pages and sort by menu_order. For alphabetical navigation, sort by post_title instead. The Page Attributes Order field and the function’s sorting options are described in the developer reference and the Pages documentation.

Method Best for Scope and layout Trade-off
Page List block Editors who want a built-in, no-code list Select a parent; list presentation Less control over custom markup than PHP
wp_list_pages() Theme or template customization Direct children with parent, or descendants with child_of; list markup Requires editing PHP in an appropriate theme or template context
Shortcode or plugin Reusable insertion or extra layouts such as a grid or widget Depends on the shortcode or plugin Adds a plugin dependency where a plugin is used

These methods provide ways to render a hierarchy; none guarantees a particular visual design, speed improvement, or SEO result. Theme CSS, the number of pages, caching, and plugin implementation affect the result.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.