J'essaie de créer un logo en fonction de la page affichée.
<?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="title here"></a>
</h1>
</div>
<?php } ?>
Le code ci-dessus fonctionne bien, mais comment appliquer l’échange d’image de logo sur les sous-pages des "services"?
<?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=""></a>
</h1>
</div>
<?php } ?>
Vous pouvez le faire avec $post->post_parent
. Vous devrez vérifier si le parent de la page enfant est la page Services. Donc, voici comment vous allez le vérifier.
J'ai supposé que 123
dans le code suivant est l'ID de la page de vos services. Remplacez-le par l'ID réel.
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 }
Vous pouvez obtenir le nom de la page/du poste en utilisant cette méthode.
$parent = array_reverse(get_post_ancestors($post->ID));
$page_parent = get_page($parent[0]);
echo $page_parent->post_name;
vous pouvez utiliser la condition selon vos besoins.
comme pour la réponse de robert hue, cette solution vous donnera l'ID de l'élément parent:
echo get_post_field( 'post_parent' );
le second paramètre est facultatif et peut contenir un ID (pour quand vous êtes en dehors de la boucle ou voulez interroger le parent d'un élément spécifique)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
cette fonction peut obtenir n'importe quel champ de la table post, comme le post slug, le statut, le type ... voir la documentation dans le codex .
dans votre cas, la fonction ressemblerait à ceci:
if ( get_post_field( 'post_parent' ) === 9 ) :
//child of page ID 9
endif;
Utilisez get_post_ancestors ($ post). Il renverra un tableau si le message actuellement affiché est l'enfant de votre page parent.
$ post_current = get_post (); $ args = array ( 'post_parent' => $ parent_id, // l'identifiant de le parent 'posts_per_page' => -1, 'post_type' => 'page', ); $ children = get_posts ($ args); $ is_child = false; pour chaque ($ enfants en tant que $ f) { if ($ f-> ID == $ post_current-> post_parent) { // c'est un enfant $ Is_child = true; Break; } } if ($ is_child) { // C'est un enfant ... } autre { // Ce n'est pas un enfant ... }