Example:
- Root parent page (we need to get the id of this page)
- Subpage
- Sub-subpage
- Sub-sub-subpage (we are here)
- Sub-subpage
- Subpage
Recursive function for getting parent page id on root level in functions.php. Works with any nesting depth:
<?php function get_root_parent_id( $page_id ) { global $wpdb; $parent = $wpdb->get_var( "SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND post_status='publish' AND ID = '$page_id'" ); if( $parent == 0 ) { return $page_id; } else { return get_root_parent_id( $parent ); } } ?>
Usage in template:
<?php global $post; $page_id = $post->ID; $root_parent_id = get_root_parent_id( $page_id ); ?>
Another way with native WordPress solution:
<?php if ( $post->post_parent ) { $ancestors = get_post_ancestors( $post->ID ); $root = count( $ancestors ) - 1; $parent = $ancestors[$root]; } else { $parent = $post->ID; } ?>
Another example:
<?php global $post; $page_id = $post->ID; //Here is the Root Parent page $root_parent_id = get_root_parent_id($page_id); $root_parent_page = get_post($root_parent_id); //Here is the page title $root_parent_title = $root_parent_page->post_title; //Here is the page link $root_parent_link = get_permalink($root_parent_id); ?> <h3><a href="<?php echo $root_parent_link;?>" title="<?php echo $root_parent_title;?>"><?php echo $root_parent_title;?></a></h3> <ul class="sidebar_menu"> <?php wp_list_pages("title_li=&child_of=$root_parent_id"); ?> </ul>
Thanks, made my day!
Any tips how to include the root page featured image?
Meaning I want to display the Root page title and display its featured image (a country flag) in front of it.
Try this function: echo get_the_post_thumbnail( $post_id, $size, $attr );