Absolute Parent of Any Child Page

Grab the absolute parent of any child page, no matter how ‘deep’ the child page is in the navigation tree. This is great for navigation more than two levels deep. Add the snippet to functions.php.

In this example, when the user is on any child page of “Our Company,”(which has an ID of 2) it will assigned a class to the list element:

&lt;ul class="nav"> &lt;!-- Main nav --><br />
    &lt;li<?php if(is_tree("2")) echo ' class="active"'; ?>>&lt;a href="<?php bloginfo( 'url' ); ?>/our-company" title="Our Company">Our Company&lt;/a>&lt;/li><br />
&lt;/ul>

Code Snippet:

<?php
function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
	global $post;         // load details about this page

	if ( is_page($pid) )
               return true;   // we're at the page or at a sub page

	$anc = get_post_ancestors( $post->ID );
	foreach ( $anc as $ancestor ) {
		if( is_page() && $ancestor == $pid ) {
			return true;
		}
	}
        return false;  // we aren't at the page, and the page is not an ancestor
}
?>

Posted in Pure hacks