Displaying part of every child page?

I have been trying to find a way to return page information in order to create a landing page. I have done this with posts before, to create a blog reel, and would like to achieve the same overall result with pages.

The Scenario:
I use a drop menu with pages created in the WordPress. Nesting the pages builds the menu.

The Goal:
I would like to get the subpages of the parent page. When a user navigates to the parent page I would like it to return links to the subpages with a part of the content of the child page. For example, I would like to display the <div> with class header.

A Starting Point:

$mypages = get_pages('child_of=".$post->ID."&sort_column=post_date&sort_order=desc');

foreach($mypages as $page)
{
    $content = $page->post_content;
    if(!$content) // Check for empty page
        continue;

    $content = apply_filters('the_content', $content);
?>
    <h2><a href="https://wordpress.stackexchange.com/questions/16791/<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a></h2>
    <div class="entry"><?php echo $content ?></div>
<?php
}

So far function returns all of the_content for all of the children and grandchildren pages. I would like it to specifically return only 1 div with a specific class from each child page and disregard all of the grandchildren pages.

2 Answers
2

Two suggestions:

  1. To output your “Loop” only for Child Pages, and not for Grandchild etc. Pages, add a conditional.

e.g.

foreach ( $mypages as $page ) {
     if ( $page->post_parent == $post->ID ) {
          // Loop goes here
     }
}
  1. To output only an excerpt of each Child Page, enable excerpt support for Pages, and then output $page->post_excerpt.

In functions.php:

add_post_type_support('page', 'excerpt');

Then in your “Loop”:

foreach ( $mypages as $page ) {

     if ( $page->post_parent == $post->ID ) {

              $content = $page->post_excerpt; // changed post_content to post_excerpt

              if( ! $content ) // Check for empty page
                   continue;

              $content = apply_filters( 'the_content', $content );
              ?>
              <h2><a href="https://wordpress.stackexchange.com/questions/16791/<?php echo get_page_link( $page->ID ) ?>"><?php echo $page->post_title ?></a></h2>
              <div class="entry"><?php echo $content ?></div>
              <?php

     }
}

Leave a Comment