CC Child Pages Shortcode Guide

Overview

Last updated: 1st May 2026 for CC Child Pages version 2.1

The CC Child Pages shortcode allows you to display WordPress child pages in a flexible grid or list format. It is ideal for creating visual navigation sections, subpage indexes or site maps.

You can insert it in any page or post using the shortcode:

[child_pages]

CC Child Pages Pro adds premium layout skins, advanced grid behaviour and precise design controls to the free CC Child Pages plugin. Create magazine-style layouts, spotlight featured pages and fine-tune colours and spacing — all while keeping fast, server-rendered output.


Basic Usage

To display child pages of the current page:

[child_pages]

To show child pages of a specific parent (by ID):

[child_pages id="12"]

To display a list in two columns with thumbnails:

[child_pages id="12" cols="2" thumbs="true"]

How it works (default behaviour)

If you do not specify any attributes, the shortcode will:

  • Display published child pages
  • Of the current page
  • One level deep (depth="1")
  • Ordered by menu_order ascending
  • In a responsive grid layout (typically 3 columns)
  • With title, excerpt and Read more … link visible
  • Results will be displayed using the Simple skin

Important behaviour: siblings and show_current_page

The siblings attribute switches the shortcode from listing children to listing siblings of the current page. To do this, it automatically uses the current page’s parent as the starting point.

By default, siblings mode excludes the current page so the page does not list itself. This is intentional and is the most common source of confusion when people first enable siblings mode.

Siblings (current page excluded by default)

[child_pages siblings="true"]

Siblings (include the current page in the results)

To include the current page when using siblings="true", set show_current_page="true":

[child_pages siblings="true" show_current_page="true"]

Full Attribute Reference

If attributes are not specified they will either be completely ignored or their default value will be used.

Parent and hierarchy

AttributeDescriptionDefault
idParent page ID
Valid values: positive integer value of ID for a particular page, or 0 to show all top-level pages
ID of the current page
page_idsInclude specific pages by ID.
Valid values: comma-separated list of specific page IDs
depthLevels of hierarchy to include
Valid values: positive integer declaring how many levels to return or -1 flat any depth, 0 nested any depth (list mode is most relevant)
1
siblingsShow sibling pages instead of children
Valid values: string true or false
false
show_current_pageInclude the current page in results
Valid values: string true or false
false
excludeExclude specific pages by ID.
Valid values: comma-separated list of specific page IDs
exclude_treeExclude a page and all child pages underneath it.
Valid values: positive integer value of ID for a particular page

Sorting and limits / pagination

AttributeDescriptionDefault
orderbySort field
Valid values: string id, author, rand, date, modified, title, slug, menu_order
menu_order
orderSort direction
Valid values: ASC (ascending) or DESC (descending)
ASC
offsetNumber of results to skip
Valid values: 0 or positive integer
0
limitLimit total number of pages displayed (-1 = no limit)
Valid values: -1 or positive integer
-1
posts_per_pageItems per page when paginating (-1 for no pagination)
Valid values: -1 or positive integer
-1
pageForce a specific page number for pagination (-1 = auto)
Valid values: -1 or positive integer
-1
ignore_sticky_postsIgnore sticky posts
Valid values: string true or false
true
post_statusFilter by status
Valid values: string – any valid post_status that can be accepted by the WordPress WP_Query (note that this may expose deleted or not yet published posts and pages).

publish – a published post or page.
pending – post is pending review.
draft – a post in draft status.
auto-draft – a newly created post, with no content.
future – a post to publish in the future.
private – not visible to users who are not logged in.
inherit – a revision.
trash – post is in trashbin.
any – retrieves any status except for inherit, trash and auto-draft. Custom post statuses with exclude_from_search set to true are also excluded.

Layout and style

AttributeDescriptionDefault
colsNumber of columns
Valid values: integer from 1 to 6
skinVisual style template
Valid values: string: simple, red, green, blue, sleek, or bold
simple
listForce list layout instead of grid
Valid values: string true or false
false
classCSS class on wrapper to allow custom design. If specified, skin styling won’t be applied but layout CSS will be.
Valid values: string. Any valid HTML class name, e.g. my-child-pages-class
use_legacy_cssUse classic stylesheet for compatibility
Valid values: string true or false
false

Content display

AttributeDescriptionDefault
hide_titleHide page title
Valid values: string true or false
false
hide_excerptHide excerpt
Valid values: string true or false
false
hide_moreHide Read more … link
Valid values: string true or false
false
hide_wp_moreIgnore WP more tag
Valid values: string true or false
false
show_page_contentShow full page content
Valid values: string true or false
false
truncate_excerptTruncate long excerpts
Valid values: string true or false
true
wordsWords to include in truncated excerpt
Valid values: positive integer
55
thumbsShow featured image
Valid values: string true, false or any registered WordPress image size name (e.g. thumbnail, medium, large, full and custom sizes)
false
lazy_loadUse lazy loading for images
Valid values: string true or false
false
link_thumbsMake thumbnails clickable
Valid values: string true or false
false
link_titlesMake titles clickable
Valid values: string true or false
false
title_link_classClass for linked titles
Valid values: string containing a valid HTML class name, e.g. my-title-link-class
ccpage_title_link
moreText for Read more linkRead more …
link_targetTarget for links
Valid values: string containing any valid HTML target, e.g. _self, _blank, _parent, _top
linkOverride link URL
Valid values: string containing any valid URL, e.g. https://ccplugins.co.uk
use_custom_excerptUse custom field for the excerpt, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
use_custom_titleUse custom field for the title, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
use_custom_moreUse custom field for the more text field, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
use_custom_thumbsUse custom field for the thumbnail, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
use_custom_linkUse custom field for the link URL, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
cc_child_pages_link
use_custom_link_targetUse custom field for the link target, if custom field specified is not found it is ignored
Valid values: string containing the name of any custom field
cc_child_pages_link_target
show_authorShow page author
Valid values: string true or false
false
show_date_createdShow created date
Valid values: string true or false
false
show_date_modifiedShow modified date
Valid values: string true or false
false
subpage_titleCustom heading above list/grid

Tip: Most users only need id, cols, skin, and thumbs to create attractive page grids.


Examples

Display child pages of About page with thumbnails:

[child_pages id="25" thumbs="true" cols="3" skin="sleek"]

Show sibling pages of the current page:

[child_pages siblings="true"]

Show top-level pages (depth=1) sorted by title:

[child_pages list="true" depth="1" orderby="title"]

Shortcode attributes

Boolean values and formatting rules

  • Most switch attributes accept "true" or "false" strings, for example hide_more="true".
  • Although values are handled case-insensitively, using lowercase (true/false) keeps things consistent.
  • Some attributes are not strictly boolean. For example, thumbs can be "false""true" or an image size name such as "medium".

1) Parent and hierarchy

id (parent page ID)

Displays child pages of a specific parent page.

Valid values: any numeric page ID
Default: current page ID

[child_pages id="25"]

page_ids (include specific pages)

Displays only the pages you list, regardless of parent/child relationships.

Valid values: comma-separated numeric page IDs
Default: empty

[child_pages page_ids="10,14,22"]

Important: page_ids overrides iddepth and siblings.

depth (levels of hierarchy)

Controls how deep into the page hierarchy the shortcode will go.

Valid values:

  • 1 = children only
  • 2 = children + grandchildren
  • 3 (or higher) = deeper levels
  • 0 = unlimited depth (nested list output is most relevant)
  • -1 = unlimited depth (flat list output is most relevant)

Default: 1

[child_pages depth="2"]
[child_pages list="true" depth="0"]
[child_pages list="true" depth="-1"]

siblings (show sibling pages)

Shows pages at the same level as the current page, using the current page’s parent as the starting point.

Valid values: true | false
Default: false

[child_pages siblings="true"]

Note: In siblings mode, the current page is excluded by default.

show_current_page (include current page when using siblings)

Used to include the current page in results when siblings="true" is enabled.

Valid values: true | false
Default: false

[child_pages siblings="true" show_current_page="true"]

exclude (exclude specific pages)

Exclude specific pages by ID.

[child_pages exclude="12,15"]

exclude_tree (exclude a page and its descendants)

Exclude a page and all child pages underneath it.

[child_pages exclude_tree="33"]

post_status (filter by status)

Advanced option to include pages with specific statuses.

Common values: publishprivatedraft

[child_pages post_status="private"]

2) Sorting and limits

orderby (sort field)

Valid values: menu_order, id, author, rand, date, modified, title, slug
Default: menu_order

[child_pages orderby="title"]

order (sort direction)

Valid values: ASC | DESC
Default: ASC

[child_pages orderby="date" order="DESC"]

offset (skip first items)

Valid values: integer
Default: 0

[child_pages offset="2"]

limit (maximum total results)

Valid values: integer, -1 for no limit
Default: -1

[child_pages limit="6"]

posts_per_page and page (pagination control)

Pagination is only relevant when you want to split long results into multiple pages.

posts_per_page sets how many items appear per page. page forces which page of results to show.

Default: posts_per_page="-1" (pagination off), page="-1" (automatic)

[child_pages posts_per_page="6"]

If you need to force a specific page number (advanced use), set page, for example:

[child_pages posts_per_page="6" page="2"]

ignore_sticky_posts

Valid values: true | false
Default: true

[child_pages ignore_sticky_posts="false"]

3) Layout and styling

list (list layout)

Forces list output instead of a card/grid layout.

Valid values: true | false
Default: false

[child_pages list="true"]

cols (columns)

Sets the number of columns for the output.

Valid values: 1 to 6

Important: cols works in both grid and list layouts. In list mode it uses CSS columns to format the list into multiple columns.

[child_pages cols="4"]
[child_pages list="true" cols="3"]

skin (predefined styles)

Valid values: simpleredgreenbluesleekbold
Default: simple

[child_pages skin="sleek" cols="3"]

class (use your own styling)

Adds a CSS class to the wrapper.

Important: If you set class, it overrides the skin styling so that only the structural layout is applied. This is ideal if you want to style the cards entirely yourself in your theme or custom CSS.

[child_pages class="my-custom-cards" cols="3"]

use_legacy_css (compatibility mode)

Valid values: true | false
Default: false

Only set use_legacy_css="true" if you are seeing layout issues, usually caused by existing CSS modifications on the site or theme CSS overriding the plugin’s modern styles.

Legacy limitation: Only the “classic” skins work with legacy CSS: simpleredgreenblue. Modern skins such as sleek and bold require the modern CSS system.

[child_pages use_legacy_css="true" skin="blue"]

subpage_title (heading above the output)

[child_pages subpage_title="More in this section"]

4) Thumbnails and links

thumbs (show featured images)

Valid values:

  • false (default)
  • true (use the plugin’s default size)
  • Any registered WordPress image size name, for example thumbnailmediumlargefull or a custom size name registered by your theme or another plugin
[child_pages thumbs="true"]
[child_pages thumbs="medium"]
[child_pages thumbs="my-custom-size"]

link_thumbs (make thumbnails clickable)

Valid values: true | false
Default: false

Note: link_thumbs has no effect unless thumbs is enabled.

[child_pages thumbs="medium" link_thumbs="true"]

lazy_load (lazy-load thumbnail images)

Valid values: true | false
Default: false

[child_pages thumbs="medium" lazy_load="true"]

link_titles and title_link_class

Make page titles clickable, and optionally set a custom CSS class for those links.

[child_pages link_titles="true"]
[child_pages link_titles="true" title_link_class="my-title-link"]

link and link_target

link overrides the destination URL for all items (advanced use). link_target sets where links open.

[child_pages link="https://example.com"]
[child_pages link_target="_blank"]

5) Titles, excerpts and Read more

Hide elements: hide_title, hide_excerpt, hide_more

Valid values: true | false
Default: false for each

[child_pages hide_title="true"]
[child_pages hide_excerpt="true"]
[child_pages hide_more="true"]

more (change Read more … text)

[child_pages more="View details"]

show_page_content (show full content)

Shows the full page content rather than an excerpt.

[child_pages show_page_content="true"]

hide_wp_more (ignore the WordPress more tag)

[child_pages hide_wp_more="true"]

truncate_excerpt and words (excerpt length)

truncate_excerpt controls whether long excerpts are trimmed. words sets the word limit when trimming.

[child_pages truncate_excerpt="false"]
[child_pages words="20"]

6) Custom fields (per-page overrides): the use_custom_… attributes

The use_custom_... attributes let you use custom fields (meta keys) to replace output on a per-page basis. If a page has the specified meta key set, that page’s output will use the custom value instead of the default value.

Replace titles per page:

[child_pages use_custom_title="my_title_meta"]

Replace excerpts per page:

[child_pages use_custom_excerpt="my_excerpt_meta"]

Replace Read more text per page:

[child_pages use_custom_more="my_more_meta"]

Replace thumbnails per page:

[child_pages use_custom_thumbs="my_image_meta"]

Replace link URL per page:

[child_pages use_custom_link="my_link_meta"]

Replace link target per page:

[child_pages use_custom_link_target="my_target_meta"]

Defaults: use_custom_link="cc_child_pages_link" and use_custom_link_target="cc_child_pages_link_target"


7) Meta display

Show additional information for each page entry.

show_author

[child_pages show_author="true"]

show_date_created

[child_pages show_date_created="true"]

show_date_modified

[child_pages show_date_modified="true"]

Troubleshooting (shortcode)

No pages are displayed

  • Confirm the parent page actually has published child pages (or siblings, if using siblings mode).
  • If you used id, double-check it is the correct page ID.
  • If you used page_ids, confirm the IDs exist and are published.
  • If you used siblings="true" on a top-level page (no parent), there may be no siblings to show.

Unexpected ordering

Try explicitly setting:

[child_pages orderby="menu_order" order="ASC"]

For an alphabetical list:

[child_pages orderby="title" order="ASC"]

Columns not behaving as expected

  • Confirm you are using a valid column number: 1 to 6.
  • If your theme applies strong layout rules, test by temporarily switching theme or enabling legacy CSS (see below).

Layout looks incorrect after theme changes or custom CSS

If your theme or custom CSS overrides plugin styles and the layout appears broken, try legacy CSS mode:

[child_pages use_legacy_css="true"]

Reminder: legacy CSS supports only simpleredgreenblue skins.


Optional Reading

How Pagination Works

If posts_per_page is set to a positive integer greater than 0, CC Child Pages divides long lists of subpages into multiple pages with the number of items set by posts_per_page on each page.


FAQs

How do I show siblings and include the current page?

Siblings mode excludes the current page by default. Include it with show_current_page="true":

[child_pages siblings="true" show_current_page="true"]

How do I remove the Read more … link but keep the excerpt?

[child_pages hide_more="true"]

How do I show thumbnails only?

[child_pages thumbs="true" hide_title="true" hide_excerpt="true" hide_more="true"]

Why are my thumbnails not clickable?

You must enable link_thumbs="true", and thumbs must be enabled too:

[child_pages thumbs="medium" link_thumbs="true"]

Can thumbs be an image size like medium or large?

Yes. thumbs accepts "true", "false" or an image size name:

[child_pages thumbs="large"]
[child_pages thumbs="full"]

How do I show grandchildren (two levels deep)?

[child_pages depth="2"]

Can I list pages in multiple columns but keep list styling?

Yes. List mode supports columns (CSS columns):

[child_pages list="true" cols="3" depth="1"]

How do I exclude specific pages from the list?

[child_pages exclude="12,15"]

How do I exclude a page and all of its subpages?

[child_pages exclude_tree="33"]

How do I fully control the visual styling of the cards?

Use class. This applies the grid structure but disables skin styling so you can style everything yourself:

[child_pages class="my-custom-cards" cols="3" thumbs="medium"]

My columns look fine on desktop but odd on mobile. Is that normal?

Yes, responsive layouts often reduce columns on smaller screens to keep content readable. If your theme overrides responsive rules, you may need custom CSS or legacy mode.

[child_pages use_legacy_css="true"]

Can I make the output alphabetical?

[child_pages orderby="title" order="ASC"]

Why does the shortcode work on some pages but not others?

  • Those pages may have no published child pages (or siblings).
  • They may be excluded via exclude or exclude_tree.
  • They may have different templates or custom CSS that affects layout.

Can I show the full page content instead of excerpts?

[child_pages show_page_content="true"]

If you only want shorter content, use excerpts with words instead.

How do I stop excerpts being shortened?

[child_pages truncate_excerpt="false"]

Can I change the Read more … text?

[child_pages more="View details"]

Does the shortcode work in widget areas?

Yes. Paste the shortcode into a text/HTML widget, or use the dedicated CC Child Pages widget.