<?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;
?>