Try this and see if it works ok for you.UPDATE: Following on the asker's comment, you can still use one query and use rewind_posts()
to iterate the loop as many times as you need, ie. do something like this to get a custom sort..
<?php
// Add the instruments into the array below, in the order you want them in.
$instruments = array( 'violin', 'viola', 'cello' );
$args = array(
'post_type' => 'biographies',
'posts_per_page' => -1,
'meta_key''nopaging' => 'instrument'true,
'surpress_filters' => true,
'meta_query' => array(
array(
'key' => 'player',
'value' => 'yes',
'compare' => '=',
'type' => 'CHAR'
),
array(
'key' => 'instrument''instruments',
// Add all necessary intruments into the'value' below=> array$instruments,
'value''compare' => array( 'violin', 'viola', 'cello' )'IN',
'compare''type' => 'IN''CHAR'
)
),
'orderby' => 'meta_value',
);
$bios = new WP_Query( $args);
?>
<?php if( $bios->have_posts() ) :
?>
<ul class="no-bull hijax">
<?php
<?phpforeach( $instruments as $instrument ) :
while( $bios->have_posts() ) : $bios->the_post();
$player_instrument = get_post_meta( get_the_ID(), 'instruments', true );
if( $instrument != $player_instrument )
continue;
?>
<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 );$player_instrument; ?></li>
<?php endwhile; ?>
</ul>
<?php
// Only need toendwhile; reset
when there's been a call to the the_postrewind_posts();
endforeach;
wp_reset_query();
?>
endif;
</ul>
<?php endif; ?>
Just note, you need to add the applicable instruments intoSee if that has the array on line 14desired effect.. :)