Comprobar si es una página hija de una página específica
Estoy tratando de mostrar un logo diferente dependiendo de qué página se está visualizando.
<?php
// Obtener el ID de la página servicios
$services_id = get_page_by_path('services')->ID;
// Verificar si es la página home, servicios o una subpágina de servicios
if ( is_page('home') || is_page('services') || (is_page() && $post->post_parent == $services_id) ) { ?>
<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="Logo del sitio web" title="Logo principal"></a>
</h1>
</div>
<?php } ?>
El código anterior funciona bien, pero ¿cómo aplicar el cambio de logo en las subpáginas de 'servicios'?

Puedes hacer eso con $post->post_parent
. Tendrás que verificar si el padre de la página hija es la página de Servicios. Así es como lo comprobarás.
Asumí que 123
en el siguiente código es el ID de la página de tus servicios. Sustitúyelo con el ID real.
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 }

<?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 }
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="Logo del sitio"></a>
</h1>
</div>
<?php } ?>

Al igual que la respuesta de Robert Hue, esta solución te dará el ID del elemento padre:
echo get_post_field( 'post_parent' );
El segundo parámetro es opcional y puede contener un ID (para cuando estás fuera del loop o quieres consultar el padre de un elemento específico)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
Esta función puede obtener cualquier campo de la tabla de posts, como el slug, estado, tipo... consulta la documentación para ver todos los campos disponibles.
En tu caso, la función se vería así:
if ( get_post_field( 'post_parent' ) === 9 ) :
//hijo de la página con ID 9
endif;

Gracias por la rápida respuesta. ¿Podrías aclarar cómo implementaría esto usando o modificando el código que tengo actualmente?

$post_current = get_post();
$args = array(
'post_parent' => $parent_id, // el ID del padre
'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 ) {
// es un hijo
$is_child = true;
break;
}
}
if ($is_child) {
// Es un hijo...
} else {
// No es un hijo...
}

Te recomiendo que proporciones información adicional con tu respuesta. Algunas referencias y contexto serían útiles para el próximo lector. http://wordpress.stackexchange.com/help/how-to-answer
