Is it possible to check if a page is a parent or if it's a child page?
I have my pages set up like this:
-- Parent
---- Child page 1
---- Child page 2
etc.
I want to show a certain menu if it's a parent page and a different menu if it's on the child page.
I know I can do something like below but I want to make it a bit more dynamic without including specific page ID's.
<?php if ($post->post_parent == '100') { // if current page is child of page with page ID 100 // show image X } ?>
Parent Page Using Parent Pages is a good way to organize your Site Pages into hierarchies. A parent page is a top-level page, with child pages nested under it. For example, you could have an “About” page as a top level or parent page, and then have child pages “Life Story” and “My Dogs” under it.
A child page can only have one parent page, but a parent page can have multiple child pages. So a child page can have sibling pages on the same level. For instance, on a company website, a Team and Mission page are probably child pages of the About us page. And, in that case, the Team and Mission page are siblings.
wp_get_post_parent_id( int|WP_Post|null $post = null Returns the ID of the post's parent.
A child page is a page that “lives” in hierarchy underneath another page (the parent). In the example below, both “Our Team” and “Company History” are child pages of “About”. Home.
You can test if the post is a subpage like this:
*(from http://codex.wordpress.org/Conditional_Tags)*
<?php global $post; // if outside the loop if ( is_page() && $post->post_parent ) { // This is a subpage } else { // This is not a subpage } ?>
I know this is an old question but I was searching for this same question and couldn't find a clear and simple answer until I came up with this one. My answer doesn't answer his explanation but it answers the main question which is what I was looking for.
This checks whether a page is a child or a parent and allows you to show, for example a sidebar menu, only on pages that are either a child or a parent and not on pages that do not have a parent nor children.
<?php global $post; $children = get_pages( array( 'child_of' => $post->ID ) ); if ( is_page() && ($post->post_parent || count( $children ) > 0 )) : ?>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With