J'utilise le code suivant pour essayer de parcourir chacun des termes de ma taxonomie personnalisée category-film
, puis d'afficher le nom du terme en tant qu'en-tête et d'afficher tous les articles personnalisés appartenant à ce terme
<?php $terms = get_terms( 'category-film' ); ?>
<?php foreach( $terms as $term ) : ?>
<?php $posts = new WP_Query( 'post=film&category-film= ' . $term->slug . '&posts_per_page=-1' ); ?>
<?php if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post(); ?>
<h3><?php echo $term->name; ?></h3>
<p><?php the_title(); ?></p>
<div class="col-md-6">
<?php the_field('url'); ?>
</div>
<?php endwhile; endif; ?>
<?php endforeach; ?>
Je constate cependant que mon code ne génère absolument rien.
Si je déplace <h3><?php echo $term->name; ?></h3>
de sorte qu'il soit extérieur de la boucle (mais dans la boucle foreach
), les noms des termes seront correctement affichés.
Donc, j'imagine que le problème doit avoir quelque chose à voir avec la boucle elle-même?
Si vos objets sont posés correctement, ce code générera 10 messages de film
CPT, où taxonomie est category-film
et il surviendra à chacun des termes de cette taxonomie particulière. Je ne suis pas au courant de vos modèles, alors posez votre mise en page en conséquence.
<?php
$_terms = get_terms( array('category-film') );
foreach ($_terms as $term) :
$term_slug = $term->slug;
$_posts = new WP_Query( array(
'post_type' => 'film',
'posts_per_page' => 10, //important for a PHP memory limit warning
'tax_query' => array(
array(
'taxonomy' => 'category-film',
'field' => 'slug',
'terms' => $term_slug,
),
),
));
if( $_posts->have_posts() ) :
echo '<h3>'. $term->name .'</h3>';
echo '<div class="row">';
while ( $_posts->have_posts() ) : $_posts->the_post();
?>
<div class="col-sm-6">
<h4><?php the_title(); ?></h4>
<p><?php echo get_post_meta( get_the_ID(), 'url', true ); ?></p>
</div>
<?php
endwhile;
echo '</div>';
endif;
wp_reset_postdata();
endforeach;
?>