How to Display a List of Child Pages for a Parent Page in WordPress

How to Display a List of Child Pages for a Parent Page in WordPress

Organizing content with parent and child pages (subpages) is a powerful way to structure your WordPress site — especially for documentation, service pages, tutorials, portfolios, or multi-level business sites. Displaying a dynamic list of child pages under a parent page helps visitors navigate deeper content quickly, reduces bounce rates, improves internal linking, and sends strong SEO signals to Google about your site hierarchy.

With full-site editing and block themes, showing child pages dynamically is still a very common need — and WordPress makes it easy without complicated coding. At Cope Business, we frequently add child page lists for clients during our technical SEO audit services to improve site structure, user experience, and crawl efficiency.

This step-by-step guide shows you four easy ways to display a list of child pages for any parent page in WordPress — using shortcodes, widgets, code, and plugins.

Why Display Child Pages for a Parent Page?

  • Better Navigation — Users see related subpages without digging through menus
  • Improved UX — Clear hierarchy = less frustration
  • SEO Benefits — Stronger internal linking, better crawl path, topic clusters
  • Content Discovery — Highlights deeper pages that might otherwise be missed
  • Professional Look — Makes documentation, services, or course sites feel organized

Ideal for: Service pages (“SEO Services” → child pages for each service), documentation sites, course outlines, or portfolio categories.

Method 1: Using a Shortcode (Easiest – No Plugin Needed)

WordPress has a built-in shortcode for listing child pages.

Steps

  • Edit any parent page (or create a new one).
  • In the block editor, add a Shortcode block.
  • Paste this shortcode:
text[list_pages child_of="CURRENT_PAGE_ID" sort_column="menu_order" depth="1"]
  • Replace CURRENT_PAGE_ID with the actual ID of the parent page (find ID in URL when editing: post=123)
  • Or use this dynamic version (shows children of current page automatically):
text[list_pages child_of="this" sort_column="menu_order" depth="1"]
  • Customize options:
    • depth=”1″ → only direct children
    • sort_column=”title” → alphabetical
    • exclude=”45,67″ → exclude specific page IDs
    • include=”12,34″ → only show these pages
  • Publish → You now have a clean list of child pages!

Pros: Zero plugins, native, very fast.
Cons: Basic styling (add CSS for better look).

Quick CSS Tip (Appearance > Customize > Additional CSS):

CSS

ul.children li {
    list-style: none;
    margin-bottom: 10px;
}
ul.children a {
    display: block;
    padding: 12px;
    background: #f8f9fa;
    border-radius: 6px;
    text-decoration: none;
}
ul.children a:hover {
    background: #e9ecef;
}

Method 2: Using a Widget (For Sidebars or Footers)

  1. Go to Appearance > Widgets.
  2. Add Page widget to your desired sidebar/footer.
  3. In widget settings:
    • Title: “More Services” or “In This Section”
    • Check “Display sub-pages of current page”
    • Check “Sort by menu order” or title
    • Depth: 1 (direct children only)
  4. Save → Child pages appear dynamically in sidebar.

Pros: Very easy, no shortcodes.
Cons: Only works in widget areas (not inside content).

Method 3: Using a Plugin (Best for Visual & Advanced Control)

Plugins give you thumbnails, styling, hierarchy, and more.

Recommended Plugin: List category posts with pagination (Free)

  1. Install List category posts with pagination or Display Pages (both free).
  2. Use shortcode inside content:
text[display-posts parent="CURRENT_PAGE_ID" posts_per_page="10" orderby="menu_order title" include_excerpt="true" image_size="thumbnail"]


(Replace CURRENT_PAGE_ID with actual ID or use dynamic methods)

Best Plugin: Page-list (free)

  • Shortcode:
[pagelist child_of="this" depth="1" show_image="true" show_first_image="true"]
  • Adds thumbnails, excerpts, hierarchy.

Pros: Thumbnails, pagination, excerpts, styling options.
Cons: Adds one more plugin (lightweight).

Method 4: Using Custom Code in Page Template (Advanced)

For full control on specific pages.

  1. Create a child theme.
  2. Copy page.php to page-child-pages.php
  3. Add this code where you want the list:
PHP<?php $children = wp_list_pages(array( 'child_of' => get_the_ID(), 'echo' => 0, 'title_li' => '', 'depth' => 1, 'sort_column' => 'menu_order' )); if ($children) { echo '<ul class="child-pages-list">'; echo $children; echo '</ul>'; } ?>
  1. Assign this template to parent pages (Page Attributes > Template).

Pros: Total control, no plugin.
Cons: Requires child theme & template knowledge.

Best Practices for Child Page Lists

  • Hierarchy — Use depth=”1″ for direct children only
  • Styling — Add thumbnails, excerpts, or icons for visual appeal
  • SEO — Use descriptive headings; add internal links naturally
  • Mobile — Ensure list is responsive (most plugins handle this)
  • Performance — Cache page if using dynamic queries

Final Thoughts

Displaying child pages under a parent page is a quick way to improve navigation, user experience, and internal linking — all of which help SEO. Start with the built-in shortcode method — it’s simple and powerful. Add a plugin if you want thumbnails and styling.

Better structure = better user experience = better rankings.

Need help organizing your site hierarchy, adding dynamic child page lists, or optimizing for SEO? Contact Cope Business for a free technical SEO consultation — we’ll review your site structure and implement improvements that drive real results.

Was this article helpful?
YesNo