wp_list_pages() template tag in WordPress is used to display a list of WordPress Pages as links, commonly in Sidebar or Header. One of the parameters of wp_list_pages() is child_of, which supposedly restrict and force the tag to display the sub-pages (including direct descendants and recurring grandchildren) of a single Page only based on the ID integer value of the Page specified, where the value 0 (default) displays all Pages.
When user uses the wp_list_pages() array function with child_of parameter, such as “wp_list_pages(“child_of=7″);”, no Pages’ links are been returned. The HTML code which supposed to populated with links to various WordPress Pages which are has the Page’s ID specified by child_of switch is empty and blank.
When child_of parameter is removed, the wp_list_pages() template tag works properly as per normal. Of course, without child_of option, it returns all Pages available.
For unknown reason, the child_of parameter of wp_list_pages() is broken and causes the wp_list_pages() function to be not working. As a workaround, user can use get_pages() function instead, although the code will be longer as a loop is needed to process all Pages returned in the result.
Example code:
<?php $pages = get_pages ('child_of=8'); foreach ($pages as $page) { echo '<li><a href="' . get_page_link($page->ID) . '">' . $page->post_title . '</a></li>'; } ?>
get_pages() function has an advantage that it accept “parant” parameter, which only display Pages that have the parent Page with ID as the value specified. Together with child_of parameter, parent parameter can be used to limit the ‘depth’ of the child_of parameter, so only one generation of descendants can be retrieved. Both child_of and parent parameter should have the same ID to achieve the effect.
Example Code:
<?php $pages = get_pages ('child_of=10&parent=10'); foreach ($pages as $page) { ?> <li><a href="<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a></li> <?php } ?>