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
Two suggestions:
- 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
}
}
- 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
}
}