You could do it with one loop, you just need a valid sort order right? Players with one instrument, followed by the next and so on.. Try this and see if it works ok for you. <?php $args = array( 'post_type' => 'biographies', 'posts_per_page' => -1, 'meta_key' => 'instrument', 'meta_query' => array( array( 'key' => 'player', 'value' => 'yes', 'compare' => '=' ), array( 'key' => 'instrument', // Add all necessary intruments into the below array 'value' => array( 'violin', 'viola', 'cello' ), 'compare' => 'IN' ) ), 'orderby' => 'meta_value', ); $bios = new WP_Query( $args); if( $bios->have_posts() ) : ?> <ul class="no-bull hijax"> <?php while( $bios->have_posts() ) : $bios->the_post(); ?> <li><a id="artist_id_<?php the_ID(); ?>" class="nb" href="<?php the_permalink(); ?>"><?php the_title(); ?></a> : <?php echo get_post_meta( get_the_ID(), 'instrument', true ); ?></li> <?php endwhile; ?> </ul> <?php // Only need to reset when there's been a call to the the_post() wp_reset_query(); endif; ?> Just note, you need to add the applicable instruments into the array on line 14.