Hi, I am using this code to style the page title depending on the parent, but sometimes I have pages that are a few levels deep, I want to check the pages grandparent also.
So for example the below code works fine for Page A, but not for Page B which is a child of Page A.
Parent Page
- Page A
- - Page B
<?php wp_reset_query();
global $post;
if ( $post->post_parent == 8 ) { ?>
<div class="pagetitleshops"><?php the_title(); ?></div>
<?php } else if ( $post->post_parent == 35 ) { ?>
<div class="pagetitlefood"><?php the_title(); ?></div>
<?php } else if ( $post->post_parent == 36 ) { ?>
<div class="pagetitlemusic"><?php the_title(); ?></div>
<?php } else { ?>
<div class="pagetitle"><?php the_title(); ?></div>
<?php } ?>
I found this bit of code, is this what I need and how would I include it into my code?
$ancestors = get_post_ancestors($post);
if (in_array(77,$ancestors)) echo "77 is an ancestor of the post";
Found here: http://wordpress.org/support/topic/depth-of-post-gtpost_parent
Thanks
Sébastien | French WordpressDesigner answers:
<?php
wp_reset_query();
global $post;
if ($post->post_parent) {
$parent = $post->post_parent;
$ancestors = get_post_ancestors($post->ID);
}
if (( $parent == 8 ) OR (in_array(8,$ancestors))) { ?>
<div class="pagetitleshops"><?php the_title(); ?></div>
<?php } else if (( $parent == 35 ) OR (in_array(35,$ancestors))) { ?>
<div class="pagetitlefood"><?php the_title(); ?></div>
<?php } else if (( $parent == 36 ) OR (in_array(36,$ancestors))) { ?>
<div class="pagetitlemusic"><?php the_title(); ?></div>
<?php } else { ?>
<div class="pagetitle"><?php the_title(); ?></div>
<?php } ?>
Arnav Joy answers:
try this
<?php wp_reset_query();
global $post;
if ($post->post_parent) {
$ancestors=get_post_ancestors($post->ID);
$root=count($ancestors)-1;
$parent = $ancestors[$root];
} else {
$parent = $post->ID;
}
if ( $parent == 8 ) { ?>
<div class="pagetitleshops"><?php the_title(); ?></div>
<?php } else if ( $parent == 35 ) { ?>
<div class="pagetitlefood"><?php the_title(); ?></div>
<?php } else if ( $parent == 36 ) { ?>
<div class="pagetitlemusic"><?php the_title(); ?></div>
<?php } else { ?>
<div class="pagetitle"><?php the_title(); ?></div>
<?php } ?>