I tried everything I could to try sorting within the WordPress functions, but was unable to get what I wanted. I ended up following PieterGoosen’s advice and do a usort(). Here is what I have now:
WP_Query $args
$args = array (
'post_type' => array( 'member' ),
'tax_query' => array(
array(
'taxonomy' => 'group',
'field' => 'slug',
'terms' => 'town-board'
),
),
);
Custom sort function
function custom_sort($a, $b) {
if ( get_post_meta($a->ID, '_town-board_position', true) === 'Town Chairman' ) {
return -1;
} else if ( strpos( get_post_meta($a->ID, '_town-board_position', true), 'Supervisor' ) !== false and strpos( get_post_meta($b->ID, '_town-board_position', true), 'Supervisor' ) !== false ) {
return strcmp(get_post_meta($a->ID, '_town-board_position', true), get_post_meta($b->ID, '_town-board_position', true));
} else {
return 1;
}
}
Now, it sorts as I wanted Town Chairman > Supervisor 1 > 2 > 3 > 4
Thank you everyone for your suggestions.