20

I am trying to fetch all direct children of a page. But I am getting all children and grand children as well. Any ideas?

PHP Source:

$args = array( 
        'child_of' => $post->ID, 
        'parent ' => $post->ID,
        'hierarchical' => 0,
        'sort_column' => 'menu_order', 
        'sort_order' => 'asc'
);
$mypages = get_pages( $args );

foreach( $mypages as $post )
{

$post_tempalte = the_page_template_part();

get_template_part( 'content' , $post_tempalte );
}

My $args should be correct according to the documentation, but it's totally ignoring parent and hierarchical.

My page structure is as follows:

Parent
-Child 1
-Child 2
--Child 1 to child 2
--Child 2 to child 2
-Child 3

And I only want to get child 1, child 2 and child 3.

  • Try considering the depth option also. another solution which I found and seems to be working is $mypages = get_pages('child_of='.$post->ID.'&sort_column=post_date&sort_order=desc&parent='.$post->ID); here you can change sort_column & sort_order as per need. – Rohit Pande Nov 27 '12 at 13:03
  • @RohitPande depth didn't help me at all, setting child_of and parent to the same it was. – Volker E. May 9 '15 at 18:16
12

Please check the parameter 'parent'. It seems there is a space after the name.

  • Oh god. So stupid. But thank you, that saved me some time. :) – jamietelin Nov 27 '12 at 14:45
3

With the parameter 'depth' of the "wp_list_pages" or the "get_pages" function, we can define how many levels do we want to retrieve. So here, I will display all the first child level of the current page.

            <?php global $post;
                    wp_list_pages( array(
                    'child_of' => $post->ID, // Only pages that are children of the current page
                    'depth' => 1 ,   // Only show one level of hierarchy
                    'sort_order' => 'asc'
                ));
            ?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.