Ordem avançada com múltiplas meta_query

Estou na versão mais recente do WordPress. Esqueci o códigox sobre wp_query e meta_query. Eu também leio esses:

Query improvements in WP 4.2: ‘orderby’ and ‘meta_query’

A more powerful ORDER BY in WordPress 4.0

Aqui estão os meus $ args para a consulta:

$args = array ( 'post_type' => array( 'member' ), 'tax_query' => array( array( 'taxonomy' => 'group', 'field' => 'slug', 'terms' => array('town-board'), ) ), 'meta_query' => array( 'relation' => 'OR', 'chairman' => array( 'key' => '_town-board_position', 'value' => 'Town Chairman', ), 'supervisor' => array( 'key' => '_town-board_position', 'value' => 'Supervisor', 'compare' => 'LIKE', ), ), 'orderby' => array( 'supervisor' => 'ASC', 'chairman' => 'DESC', ), ); 

Eu manipulei diferentes configurações de ordem, mas não parece produzir os resultados que eu gostaria.

Com os $ args acima, eu recebo o presidente listado primeiro, mas os Supervisores estão listados para trás. Então, vai Presidente, Supervisor 3, Supervisor 2, Supervisor 1.

Eu quero classificar isso para que o presidente seja o primeiro e, em seguida, Supervisor 1, Supervisor 2 e assim por diante são listados abaixo do presidente.

Eu simplesmente não consigo envolver minha cabeça em torno disso …

Qualquer input seria apreciada. Se mais detalhes forem necessários, avise-me.

Solutions Collecting From Web of "Ordem avançada com múltiplas meta_query"

Eu tentei tudo o que pude para tentar classificar dentro das funções do WordPress, mas não conseguiu obter o que eu queria. Acabei seguindo o conselho de PieterGoosen e fiz um usort (). Aqui está o que tenho agora:

WP_Query $ args

 $args = array ( 'post_type' => array( 'member' ), 'tax_query' => array( array( 'taxonomy' => 'group', 'field' => 'slug', 'terms' => 'town-board' ), ), ); 

Função de sorting personalizada

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

Agora, ele classifica como queria Cidade Presidente> Supervisor 1> 2> 3> 4

Obrigado a todos por suas sugestões.