Проверьте, является ли страница родителем или дочерней страницей?
Можно ли проверить, является ли страница родительской или дочерней?
У меня созданы мои страницы следующим образом:
- Родитель
---- Ребенок стр. 1
---- Ребенок стр. 2
и др.
Я хочу показать определенное меню, если это родительская страница и другое меню, если оно находится на дочерней странице.
Я знаю, что могу сделать что-то вроде ниже, но хочу сделать его более динамичным, не включая конкретные идентификаторы страниц.
<?php
if ($post->post_parent == '100') { // if current page is child of page with page ID 100
// show image X
}
?>
Ответы
Ответ 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 )) :
?>