Skip to content

Instantly share code, notes, and snippets.

@sebask
Forked from ericrasch/is_child.php
Created June 8, 2016 16:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebask/71864c8f09b0c16fb5dac0a9df2fb306 to your computer and use it in GitHub Desktop.
Save sebask/71864c8f09b0c16fb5dac0a9df2fb306 to your computer and use it in GitHub Desktop.
WordPress conditional function to check if a page is a parent/child/ancestor. In other words, if the page is within a tree of another page, show the code. Other code I've seen either only work with IDs, only check if it's a child, or detect all subpages (even outside of the direct tree).
/* =BEGIN: Check If Page Is Child
Source: http://bavotasan.com/2011/is_child-conditional-function-for-wordpress/
---------------------------------------------------------------------------------------------------- */
function is_child( $page_id_or_slug ) { // $page_id_or_slug = The ID of the page we're looking for pages underneath
global $post; // load details about this page
if ( !is_numeric( $page_id_or_slug ) ) { // Used this code to change a slug to an ID, but had to change is_int to is_numeric for it to work.
$page = get_page_by_path( $page_id_or_slug );
$page_id_or_slug = $page->ID;
}
if ( is_page() && ( $post->post_parent == $page_id_or_slug ) )
return true; // we're at the page or at a sub page
else
return false; // we're elsewhere
};
/* =BEGIN: Check If Page Is Parent/Child/Ancestor
Source: http://css-tricks.com/snippets/wordpress/if-page-is-parent-or-child/#comment-172337
---------------------------------------------------------------------------------------------------- */
function is_tree( $page_id_or_slug ) { // $page_id_or_slug = The ID of the page we're looking for pages underneath
global $post; // load details about this page
if ( !is_numeric( $page_id_or_slug ) ) { // Used this code to change a slug to an ID, but had to change is_int to is_numeric for it to work: http://bavotasan.com/2011/is_child-conditional-function-for-wordpress/
$page = get_page_by_path( $page_id_or_slug );
$page_id_or_slug = $page->ID;
}
if ( is_page() && ( $post->post_parent == $page_id_or_slug || (is_page( $page_id_or_slug ) || in_array($page_id_or_slug, $post->ancestors) ) ) )
return true; // we're at the page or at a sub page
else
return false; // we're elsewhere
};
<?php if ( is_tree( 'subpage' ) ) { // Using the slug /subpage/, but you could also use the ID of /subpage/ ?>
[[... insert your code here ...]]
<?php } ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment