I am trying to get a list of child pages to display on the parent page via wordpress. The best way I can describe what I am trying to do is if you are on the about page (/about) but you want to go to the meet the team page (/about/meet-the-team) when you are on the about page it should then display a link to the meet the team page.
I have this code at the moment
function getPagesHierarchy() {
$pagesQuery = new WP_Query(array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => 0,
'order' => 'ASC',
'post_status' => 'publish'
)) ;
if ($pagesQuery->have_posts()) {
while($pagesQuery->have_posts()) {
$pagesQuery->the_post() ;
the_title() ;
echo '<br>' ;
}
}
}
What this is doing is it is getting a structure of the parent pages like this image shows below
This is currently getting all the parent pages which is fine however I also need it to display that parent pages children under it. so for example it would be something like this;
Any help with this would be much appreciated if I can give anything else to assist in what I am trying to achieve please do let me know.
CodePudding user response:
You can use wp_list_pages()
and pass in the parent page ID with child_of
to get its children. You can refer to the WP docs for more info.
So that'd look something like
wp_list_pages(array(
'child_of' => $parentId
));
CodePudding user response:
Probably best to use get_pages()
function getPagesHierarchy() {
$pages = get_pages(array('parent' => 0));
foreach ( $pages as $page ) {
echo $page->post_title;
echo '<br>' ;
$child_pages = get_pages(array( 'child_of' => $page->ID));
foreach ( $child_pages as $child_page ) {
echo $child_page->post_title;
echo '<br>' ;
}
}
}