Проверка нахождения на дочерней странице определенной страницы
Я пытаюсь вывести логотип в зависимости от просматриваемой страницы.
<?php if ( is_page('home') || is_page('services') ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }
else { ?>
<div class="col-md-2 col-sm-4">
<h1 class="logo imglogo">
<a href="http://websiteaddress.com">
<img src="<?php echo get_bloginfo('template_directory');?>/images/picturehere.png" alt="заголовок здесь"></a>
</h1>
</div>
<?php } ?>
Приведенный выше код работает нормально, но как применить смену логотипа на подстраницах страницы 'services'?

Вы можете сделать это с помощью $post->post_parent
. Вам нужно будет проверить, является ли родитель дочерней страницы страницей "Услуги". Вот как это можно проверить.
В следующем коде я предположил, что 123
— это ID вашей страницы услуг. Замените его на реальный ID.
if ( 123 == $post->post_parent ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }

Вы можете получить страницу поста / название поста, используя этот метод.
$parent = array_reverse(get_post_ancestors($post->ID));
$page_parent = get_post($parent[0]);
echo $page_parent->post_name;
Вы можете использовать условие в соответствии с вашими требованиями.

<?php
global $post;
// Проверяем, является ли текущая страница главной или страницей услуг
if ( is_page('home') || is_page('services') ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }
// Проверяем URL на соответствие шаблону страницы услуги
elseif ( preg_match( '#^service(/.+)?$#', $wp->request ) ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php
}
// Для всех остальных случаев выводим логотип с изображением
else { ?>
<div class="col-md-2 col-sm-4">
<h1 class="logo imglogo">
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">
<img src="<?php echo get_bloginfo('template_directory');?>/images/picturehere.png" alt="Логотип компании" title="Логотип компании"></a>
</h1>
</div>
<?php } ?>

Так же, как и в ответе Роберта Хью, это решение позволит вам получить ID родительского элемента:
echo get_post_field( 'post_parent' );
Второй параметр является необязательным и может содержать ID (для случаев, когда вы находитесь вне цикла или хотите запросить родителя определенного элемента)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
Эта функция позволяет получить любое поле из таблицы постов, например, slug записи, статус, тип... см. документацию для всех доступных полей.
В вашем случае функция будет выглядеть так:
if ( get_post_field( 'post_parent' ) === 9 ) :
//дочерний элемент страницы с ID 9
endif;

Спасибо за быстрый ответ. Не могли бы вы уточнить, как мне реализовать это, используя или модифицируя мой текущий код?

$post_current = get_post(); $args = array( 'post_parent' => $parent_id, // ID родителя 'posts_per_page' => -1, 'post_type' => 'page', ); $children = get_posts($args); $is_child = false; foreach ($children as $f) { if ( $f->ID == $post_current->post_parent ) { // это дочерний элемент $is_child = true; break; } } if ($is_child) { // Это дочерний элемент... } else { // Это не дочерний элемент... }

Рекомендуем предоставить дополнительную информацию в вашем ответе. Некоторая справочная информация и контекст будут полезны для следующих читателей. http://wordpress.stackexchange.com/help/how-to-answer
