J'essaie de servir différents en-têtes en fonction du type de page sur lequel l'utilisateur se trouve. Ceci est mon code.
<!-- IF HOME -->
<?php if ( is_front_page() && is_home() ) : ?>
<?php get_template_part( 'template-parts/headers/home-header' ); ?>
<!-- IF TEMPLATES -->
<?php elseif ( is_page_template('archive-mobile_photo.php') ) : ?>
<?php get_template_part( 'template-parts/headers/home-header' ); ?>
<!-- IF POST -->
<?php else : ?>
<?php get_template_part( 'template-parts/headers/Zine-header' ); ?>
<?php endif; ?>
Ce qui est étrange, c'est que la page d'accueil et les pages de publication fonctionnent correctement, mais la vérification à l'aide de is_page_template()
ne fonctionne pas. J'ai le plugin moniteur de requête et il confirme que la page est le modèle archive-mobile_photo.php
.
Je suis assez nouveau dans WordPress et je suis totalement perdu.
Il semble que vous vérifiiez si vous êtes sur l'archive du type d'article mobile_photo
avec cette ligne:
<?php elseif ( is_page_template( 'archive-mobile_photo.php' ) ) : ?>
Si c'est effectivement le cas, utilisez is_post_type_archive( $post_types )
à la place:
<?php elseif ( is_post_type_archive( 'mobile_photo' ) ) : ?>
Plutôt que d'utiliser les conditions de base pour charger les en-têtes en tant que parties de modèle, il serait plus lisible d'utiliser la fonctionnalité intégrée à get_header()
lorsque vous l'appelez pour chaque modèle de page. Ces fichiers vivraient à la racine du dossier du thème.
Vous nommeriez vos deux fichiers header-home.php
et header-Zine.php
et appelez-les dans le modèle de page avec:
get_header('home');
et
get_header('Zine');
Si vous avez besoin des conditions pour une page plus complexe, vous pouvez toujours vérifier la page et charger le fichier approprié en fonction de vos critères. Il y a aussi un exemple dans le codex.
Je ne suis pas sûr de savoir quelle est la différence entre get_header()
et get_template_part()
mais si rien d'autre, je pense que c'est plus lisible et qu'il respecte le standard WordPress.