Parcurgerea termenilor din taxonomii personalizate și afișarea tuturor articolelor pentru fiecare
Folosesc următorul cod pentru a încerca să parcurg fiecare termen din taxonomia mea personalizată category-film
și să afișez numele termenului ca titlu împreună cu toate articolele personalizate care aparțin acelui termen
<?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; ?>
Observ totuși că acest cod nu afișează absolut nimic.
Dacă mut <h3><?php echo $term->name; ?></h3>
astfel încât să fie în afara buclei (dar în interiorul buclei foreach
) afișează corect numele termenilor.
Așa că îmi imaginez că problema trebuie să fie legată de bucla în sine?
Dacă elementele tale sunt configurate corect, acest cod va afișa 10 postări din tipul de postare personalizat film
, unde taxonomia este category-film
și va afișa fiecare termen al acelei taxonomii specifice. Nu sunt conștient de șablonarea ta, așa că aranjează layout-ul în consecință.
<?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 pentru a evita avertismentele de limită de memorie PHP
'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;
?>
