Controllare se si è in una pagina figlia di una pagina specifica
Sto cercando di mostrare un logo diverso a seconda della pagina che viene visualizzata.
<?php
// Verifica se è la pagina home, servizi o una sottopagina di servizi
if ( is_page('home') || is_page('services') || is_page_template('services') || $post->post_parent == get_page_by_path('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 sito" title="Logo principale"></a>
</h1>
</div>
<?php } ?>
Il codice sopra funziona bene, ma come posso applicare il cambio del logo anche nelle sotto-pagine di 'servizi'?

Puoi farlo con $post->post_parent
. Dovrai verificare se il genitore della pagina figlia è la pagina Servizi. Ecco come puoi verificarlo.
Ho ipotizzato che 123
nel codice seguente sia l'ID della pagina dei tuoi servizi. Sostituiscilo con l'ID effettivo.
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;
// Mostra il logo in formato testo per la pagina home o servizi
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 }
// Mostra il logo in formato testo anche per le pagine di servizi (URL che iniziano con "service")
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
}
// Per tutte le altre pagine mostra il logo in formato immagine
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 sito" title="Torna alla homepage"></a>
</h1>
</div>
<?php } ?>

Come nella risposta di Robert Hue, questa soluzione ti fornirà l'ID dell'elemento genitore:
echo get_post_field( 'post_parent' );
Il secondo parametro è opzionale e può contenere un ID (per quando sei al di fuori del loop o vuoi interrogare il genitore di un elemento specifico)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
Questa funzione può ottenere qualsiasi campo dalla tabella dei post, come lo slug, lo stato, il tipo... vedi la documentazione per tutti i campi disponibili.
Nel tuo caso la funzione sarebbe così:
if ( get_post_field( 'post_parent' ) === 9 ) :
//figlio della pagina con ID 9
endif;

Grazie per la rapida risposta. Potresti chiarire come potrei implementare questo utilizzando o modificando il codice che ho attualmente?

$post_current = get_post();
$args = array(
'post_parent' => $parent_id, // l'ID del genitore
'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 ) {
// è un figlio
$is_child = true;
break;
}
}
if ($is_child) {
// È un figlio...
} else {
// Non è un figlio...
}

Ti consiglio di fornire alcune informazioni aggiuntive con la tua risposta. Alcuni riferimenti e contesto sarebbero utili per il prossimo lettore. http://wordpress.stackexchange.com/help/how-to-answer
