Проверка: является ли страница родительской, имеет ли дочерние страницы, имеет ли страницы-внуки
У меня есть один шаблон страницы по умолчанию, который я хочу использовать для двух сценариев. Я предпочитаю использовать только один шаблон страницы ради простоты для моего клиента.
Вот что я пытаюсь реализовать:
if родительская_страница ИЛИ дочерняя_страница_без_потомков {
отображать макет_полной_ширины
}
if дочерняя_страница_с_потомками или страница_внук {
отображать макет_с_боковым_меню
}
Это возможно?
Вот что я попробовал до сих пор:
if( is_page() && $post->post_parent > 0 ) {
// отображать макет_с_боковым_меню
} else {
// отображать макет_полной_ширины
}
Пока что это работает для страниц верхнего уровня, отображая макеты полной ширины. Но как мне убедиться, что макет с боковым меню отображается только на дочерних страницах с потомками и на страницах-внуках? И чтобы для дочерних страниц без потомков отображался макет полной ширины?
Заранее спасибо. Я уверен, что есть простое решение, просто я относительно новичок в WP и все еще пытаюсь понять, что можно, а что нельзя сделать.

Перед тем как прочитать решение, предложенное Bravokeyl, я методом проб и ошибок наконец пришел к решению, которое сработало в моем случае. Я не уверен, какое из двух решений лучше или более правильное, я знаю лишь то, что мой вариант сработал для моей конкретной проблемы.
Вот код, который я использовал для отображения макета во всю ширину или макета с боковым меню:
if( is_page() && $post->post_parent > 0 ) {
// у записи есть родительские элементы
$children = get_pages('child_of='.$post->ID);
if( count( $children ) != 0 ) {
// отображаем макет с боковым меню
}
$parent = get_post_ancestors($post->ID);
if( count( $children ) <= 0 && empty($parent[1]) ) {
// отображаем макет во всю ширину
} elseif ( count( $children ) <= 0 && !empty($parent[1]) ) {
// отображаем макет с боковым меню
}
} else {
// у записи нет родительских элементов
// отображаем макет во всю ширину
}

Level-0
--Level-1
----Level-2
------Level-3
----Levelanother-2
--Levelanother-1
проверить, является ли страница страницей верхнего уровня (она может иметь или не иметь дочерних страниц)?
$post->$post_parent == 0
или пустой get_post_ancestors( $post )
возвращает только Level-0 страницы.
Является ли страница дочерней и относится только к Level-1 или Levelanother-1?
$post->$post_parent > 0
или не пустой get_post_ancestors( $post )
и пустой get_post_ancestors( $post->post_parent )
Является ли страницей level-1, но не имеет дочерних страниц, как Levelanother-1?
$post->$post_parent > 0
или не пустой get_post_ancestors( $post )
и пустой get_post_ancestors( $post->post_parent )
и count(get_children( $post ->ID, 'ARRAY_A' )) == 0
..
Я ещё не проверял это..но должно работать нормально. Вы также можете поэкспериментировать с get_page_children() и get_posts()
