I'd like to get a list of all the custom posts that belong to a specific taxonomy.
I've tried many things including this code, but I get a list of all the posts in the 'members' cpt, and not just posts associated to the 'producers' taxonomy. How can I get it work ?
<?php
$args = array(
'post_type' => 'members',
'posts_per_page' => -1,
'tax_query' => array(
'taxonomy' => 'producers'
),
);
$the_query = new WP_Query($args);
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<li class="producers" id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
?>
EDIT 2018-10-31
I finally made it through native WP functions and a custom query. I also needed the pagination functionality so I built it this way.
$termArray = [];
$theTerms = get_terms('producers');
foreach ($theTerms as $singleTerm) {
$theSlug = $singleTerm->slug;
array_push($termArray,$theSlug);
}
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$loop = new WP_Query( array( 'post_type' => 'members', 'orderby' => 'rand', 'posts_per_page' => 5, 'paged' => $paged, 'tax_query' => array(
array(
'taxonomy' => 'producers',
'terms' => $termArray,
)
)));
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post();
$terms = get_the_terms( $post->ID, 'producers');
if ($terms) {
/// Here is the code for posts display
}
endwhile;
endif;
wp_reset_postdata();
// Pagination
$big = 99999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $loop->max_num_pages
));