Показать содержимое, если родительская страница имеет дочерние страницы
Используя этот фрагмент кода, вы можете показывать содержимое в зависимости от того, является ли страница дочерней или нет:
<?php
global $post;
if ( is_page() && $post->post_parent ) : ?>
Это дочерняя страница.
<?php else : ?>
Это родительская страница.
<?php endif; ?>
Но я хотел бы добавить еще одно условие, чтобы можно было иметь разное содержимое для родительской страницы, которая имеет дочерние страницы, и родительской страницы, которая их не имеет. Будет ли работать что-то подобное? Если да, что должно быть вместо "XXX"?
<?php
global $post;
if ( is_page() && $post->post_parent ) : ?>
Это дочерняя страница.
<?php elseif ( is_page() && XXX ) : ?>
Это родительская страница (с одной или несколькими дочерними страницами)
<?php else : ?>
Это родительская страница без дочерних страниц.
<?php endif; ?>
Заранее спасибо!

В итоге я использовал этот код:
<?php
global $post;
$children = get_pages( array( 'child_of' => $post->ID ) );
if ( is_page() && $post->post_parent ) : ?>
Это дочерняя страница.
<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
Это родительская страница (с одной или несколькими дочерними)
<?php else : ?>
Это родительская страница без дочерних.
<?php endif; ?>

Вы также можете создать собственный условный тег. В файл functions.php добавьте:
function my_is_parent() {
global $post;
$children = get_pages('child_of='.$post->ID);
if( count( $children ) > 0 ) {
$parent = true;
}
return $parent;
}
И в вашем условии IF вместо XXX используйте: my_is_parent()
Конечно, вы можете назвать функцию как-то иначе, а не "my_is_parent", если хотите. Хотя не уверен в этом моменте, но предполагаю, что использование "is_parent" не совсем надежно, если эта функция когда-нибудь войдет в ядро WordPress.

Разве это не должно возвращать $parent = true, булево значение, а не текст?

@Trevor да, ты прав. Хотя это работает и с текстовым значением, но я обновил этот 3-летний ответ сейчас :)

этого можно добиться, используя
global $post;
$args = array (
'parent' => $post->ID
);
$children = get_pages( $args );
if ( is_page() && $post->post_parent ) : ?>
Это дочерняя страница.
<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
Это родительская страница (с одной или несколькими дочерними)
<?php else : ?>
Это родительская страница без дочерних.
<?php endif; ?>
и используя count( $children ) > 0
вместо вашего XXX
