Check if a page is a parent or if it's a child page?

后端 未结 4 1197
清酒与你
清酒与你 2021-01-31 09:12

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

相关标签:
4条回答
  • 2021-01-31 09:14

    For Wordpress, you can simply check:

    <?php 
      if (wp_get_post_parent_id(get_the_ID())) {
        echo "I am a child page";
      } 
    ?>
    
    0 讨论(0)
  • 2021-01-31 09:21

    Put this function in the functions.php file of your theme.

    function is_page_child($pid) {// $pid = The ID of the page we're looking for pages underneath
      global $post;         // load details about this page
      $anc = get_post_ancestors( $post->ID );
      foreach($anc as $ancestor) {
          if(is_page() && $ancestor == $pid) {
              return true;
          }
      }
      if(is_page()&&(is_page($pid)))
         return true;   // we're at the page or at a sub page
      else
          return false;  // we're elsewhere
    };
    

    Then you can use it:

    <?php 
        if(is_page_child(100)) {
            // show image X 
        } 
    ?>
    
    0 讨论(0)
  • 2021-01-31 09:31

    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
    }
    ?>
    
    0 讨论(0)
  • 2021-01-31 09:33

    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  )) : 
    ?>
    
    0 讨论(0)
提交回复
热议问题