Verifică dacă este pe pagina copil a unei anumite pagini
Încerc să afișez un logo diferit în funcție de pagina care este vizualizată.
<?php
// Verifică dacă este pagina principală, pagina de servicii sau orice subpagină a paginii de servicii
if ( is_page('home') || is_page('services') || is_page_template('services') ||
(is_page() && $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 website" title="Logo principal website"></a>
</h1>
</div>
<?php } ?>
Codul de mai sus funcționează bine, dar cum aplic schimbarea logo-ului și pe sub-paginile din 'services'?

Puteți face acest lucru cu $post->post_parent
. Va trebui să verificați dacă părintele paginii copil este pagina de Servicii. Iată cum puteți verifica acest lucru.
Am presupus că 123
în codul următor este ID-ul paginii dvs. de Servicii. Înlocuiți-l cu ID-ul 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" title="Logo companie"></a>
</h1>
</div>
<?php } ?>

La fel ca răspunsul lui Robert Hue, această soluție va obține ID-ul elementului părinte:
echo get_post_field( 'post_parent' );
Al doilea parametru este opțional și poate conține un ID (pentru când ești în afara buclei sau vrei să interoghezi părintele unui element specific)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
Această funcție poate obține orice câmp din tabelul postărilor, cum ar fi slug-ul postării, statusul, tipul... vezi documentația pentru toate câmpurile disponibile.
În cazul tău, funcția ar arăta astfel:
if ( get_post_field( 'post_parent' ) === 9 ) :
//copil al paginii cu ID 9
endif;

Mulțumesc pentru răspunsul rapid. Poți să clarifici te rog cum aș putea implementa asta folosind sau modificând codul pe care îl am în prezent?

$post_current = get_post(); // Obține postarea curentă
$args = array(
'post_parent' => $parent_id, // ID-ul părintelui
'posts_per_page' => -1, // Toate postările copil
'post_type' => 'page', // Tipul de postare - pagină
);
$children = get_posts($args); // Obține toate paginile copil
$is_child = false; // Inițializare flag pentru verificare
foreach ($children as $f) {
if ( $f->ID == $post_current->post_parent ) {
// Este o pagină copil
$is_child = true;
break;
}
}
if ($is_child) {
// Este o pagină copil...
} else {
// Nu este o pagină copil...
}

Vă recomand să furnizați informații suplimentare în răspunsul dumneavoastră. Câteva referințe și context ar fi utile pentru următorul cititor. http://wordpress.stackexchange.com/help/how-to-answer
