I have a custom post type where I've created 3 pages in a parent-child relationship. The pages are created like this : PARENT-CHILD-GRANDCHILD
I want the child and the grandchild pages to get the same content as the parent page and everything I add from the dashboard in the content area to be added after the parent post content.
For example if my parent post contains few lines of text and in my child post I will add another few lines of text this should be added after the parent content.
Here is the function for creating the CPT hierarchy :
function wpse121567_get_cpt_hierarchy() {
// Make sure it's the right CPT
if ( 'debate-parent' != get_post_type() ) {
return false;
}
// Globalize the post object
global $post;
// Parent CPT
if ( 0 == $post->post_parent ) {
return 'debate-parent';
}
// Not a parent CPT, so fetch current post parent
$parent = get_post( $post->post_parent );
// Child CPT
if ( 0 == $parent->post_parent ) {
return 'debate-child';
} else {
return 'debate-grandchild';
}
}
And this is my single-{myCPT.php} :
<div id="content" class="span9" role="main">
<?php if ( 'debate-parent' == wpse121567_get_cpt_hierarchy() ) {
// Normal loop here
if ( have_posts() ) : while ( have_posts() ) : the_post();
get_template_part( 'inc/post-format/single', get_post_format() );
endwhile; endif;
}
// Child CPT
else if ( 'debate-child' == wpse121567_get_cpt_hierarchy() ) {
// Globalize post object
the_post();
$parent = get_post( $post->post_parent );
echo '<h1>' . $parent->post_title . '</h1>';
$content = apply_filters( 'the_content', $parent->post_content ) . get_the_content();
echo '<div>' . $content . '</div>';
// Fetch parent CPT comments
$parent_cpt_comments = get_comments( array(
'post_id' => $post->post_parent,
'status' => 'approve'
) );
// Loop through parent CPT comments
foreach ( $parent_cpt_comments as $comment ) {
// Output comment list markup here
}
}
// Grandchild CPT
else if ( 'debate-grandchild' == wpse121567_get_cpt_hierarchy() ) {
// Comment Stats code goes here
}
?>
<?php
$enable_rtl = of_get_option('enable_rtl', false);
if(!of_get_option('disable_pagination')){
if($enable_rtl){
$next_post = get_adjacent_post( false, '', true );
$prev_post = get_adjacent_post( false, '', false );
}else{
$next_post = get_adjacent_post( false, '', false );
$prev_post = get_adjacent_post( false, '', true );
}
?>
<?php
}
// show related posts by tag
if(!of_get_option('disable_related_posts')){
get_template_part( 'inc/related-posts' );
}
// If comments are open or we have at least one comment, load up the default comment template provided by Wordpress
if ( comments_open() )
comments_template( '', true );
else{ // Well, if there are no posts to display and loop through, let's apologize to the reader (also your 404 error) ?>
<article class="post error">
<h1 class="404"><?php _e('Page not found', 'outbox'); ?></h1>
</article>
<?php } // OK, I think that takes care of both scenarios (having a post or not having a post to show) ?>
</div><!-- #content .site-content -->
My question is how can I automatically get the parent post content on every child and if I add more content from the dashboard to be added after the content from the parent element?
Thank you!