Question concernant la structure du modèle:
Dans une boucle personnalisée, j'ai inséré un get_template_part ('resources', 'layout') qui contient le balisage suivant:
<div class="custom-content">
<?php if ( get_post_type() === 'videos' ) { ?>
<div class="video-popup">
<?php the_field('video_popup'); ?>
</div>
<?php } else { ?>
<div class="featured-image">
<?php the_post_thumbnail('full'); ?>
<?php if ( get_post_type() === 'articles' ) { ?>
<p class="custom-content-btn">
<a href="<?php the_field( 'article_link' )?>" class="btn btn-primary" target="_blank"><?php echo __('READ'); ?></a>
</p>
<?php } ?>
</div>
<?php if ( get_post_type() === 'audio' ) { ?>
<div class="audio-content">
<?php the_field('audio_clip'); ?>
</div>
<?php } ?>
<?php } ?>
</div>
J'ai 3 CPT (vidéos, audio et articles). Cependant, je ne suis pas sûr que ce soit le meilleur moyen d’afficher le contenu de manière conditionnelle; semble un peu brouillon. Je suppose que la partie délicate est qu’un balisage apparaît pour tous les CPT, entre ces balisages conditionnels.
Qu'est-ce qui serait considéré comme la "meilleure pratique" pour s'attaquer à ce problème? Apprécier n'importe quelle entrée!
Vous avez dit que vous êtes dans une boucle personnalisée qui renvoie différents types de post_types:
//.....
while ( $loop->have_posts() ) : $loop->the_post();
get_template_part($post->post_type,'layout');
endwhile;
de cette façon, vous n'utilisez pas de conditionnels supplémentaires et vous vous reposez sur get_template_part (). Vous avez simplement besoin de fichiers différents post_type1-layout.php
, post_type2-layout.php
, etc. dans le dossier racine de votre thème theme/child en conservant les modèles séparés, plus propres et plus utilisables.
Vous pouvez également placer les fichiers de modèle dans un sous-dossier customTemplates
et utiliser
get_template_part('customTemplates/'.$post->post_type,'layout');
Il n'y a pas de meilleure pratique, mais si vous examinez les thèmes par défaut de Wordpress, ils chargeront un modèle différent basé sur le type de publication personnalisé. Le if( get_post_type() === 'videos' )
etc ... sera placé dans le fichier où se trouve votre boucle. et charger un partiel différent en fonction de cela.