Recently I had been asked to set up a loop in WordPress which looped through any terms assigned to the custom post and displayed them on the page. The below code is a pretty simple way, I found, to do it.
<?php // Get all the categories $categories = get_terms( 'service-category' ); // Loop through all the returned terms foreach ( $categories as $category ): // set up a new query for each category, pulling in related posts. $services = new WP_Query( array( 'post_type' => 'services', 'showposts' => -1, 'tax_query' => array( array( 'taxonomy' => 'service-category', 'terms' => array( $category->slug ), 'field' => 'slug' ) ) ) ); ?> <h3><?php echo $category->name; ?></h3> <ul> <?php while ($services->have_posts()) : $services->the_post(); ?> <li><?php the_title(); ?></li> <?php endwhile; ?> </ul> <?php // Reset things, for good measure $services = null; wp_reset_postdata(); // end the loop endforeach; ?>
Full article was written on my blog at: http://jackabox.co.uk/blog/looping-through-custom-posts-with-custom-taxonomies