Ich verwende den folgenden Code, um zu versuchen, alle Begriffe in meiner benutzerdefinierten Taxonomie category-film
zu durchlaufen, und gebe dann den Begriffsnamen als Überschrift zusammen mit der Anzeige aller benutzerdefinierten Beiträge aus, die zu diesem Begriff gehören
<?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; ?>
Ich stelle jedoch fest, dass mein Code überhaupt nichts ausgibt.
Wenn ich <h3><?php echo $term->name; ?></h3>
so verschiebe, dass er außerhalb der Schleife liegt (aber innerhalb der foreach
-Schleife), werden die Namen der Begriffe fine ausgegeben.
Also stelle ich mir vor, das Problem muss etwas mit der Schleife selbst zu tun haben?
Wenn Ihre Sachen richtig verlegt sind, gibt dieser Code 10 Posts von film
CPT aus, wobei Taxonomie für category-film
steht und in jedem Begriff dieser bestimmten Taxonomie vorkommt. Mir ist Ihr Template nicht bekannt, also legen Sie Ihr Layout entsprechend an.
<?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;
?>