Подтвердить что ты не робот

Проверьте, является ли страница родителем или дочерней страницей?

Можно ли проверить, является ли страница родительской или дочерней?

У меня созданы мои страницы следующим образом:

- Родитель

---- Ребенок стр. 1

---- Ребенок стр. 2

и др.

Я хочу показать определенное меню, если это родительская страница и другое меню, если оно находится на дочерней странице.

Я знаю, что могу сделать что-то вроде ниже, но хочу сделать его более динамичным, не включая конкретные идентификаторы страниц.

<?php
if ($post->post_parent == '100') { // if current page is child of page with page ID 100
   // show image X 
}
?>
4b9b3361

Ответ 1

Вы можете проверить, является ли сообщение подстраницей следующим образом:
* (от 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
}
?>

Ответ 2

Поместите эту функцию в файл functions.php вашей темы.

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
};

Затем вы можете использовать его:

<?php 
    if(is_page_child(100)) {
        // show image X 
    } 
?>

Ответ 3

Я знаю, что это старый вопрос, но я искал этот же вопрос и не мог найти ясный и простой ответ, пока не придумал этот. Мой ответ не отвечает на его объяснение, но он отвечает на главный вопрос, который я искал.

Это проверяет, является ли страница дочерним или родительским, и позволяет показывать, например, меню боковой панели, только на страницах, которые являются либо дочерними, либо родительскими, а не на страницах, у которых нет родителя или детей.

<?php 
   global $post;    
   $children = get_pages( array( 'child_of' => $post->ID ) );
   if ( is_page() && ($post->post_parent || count( $children ) > 0  )) : 
?>