Advanced orderby mit mehreren Meta-Abfragen

Ich bin auf der neuesten Version von WordPress. Ich habe den Codex bezüglich wp_query und meta_query durchforstet. Ich lese auch diese durch:

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

A more powerful ORDER BY in WordPress 4.0

Hier sind meine $ Argumente für die Abfrage:

$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', ), ); 

Ich habe mit verschiedenen Ordnungen durch Konfigurationen gebastelt, aber es scheint nicht die Ergebnisse zu produzieren, die ich möchte.

Mit den oben genannten $ Argumenten bekomme ich zuerst den Vorsitzenden aufgelistet, aber die Supervisors werden rückwärts aufgelistet. Also, es geht um Chairman, Supervisor 3, Supervisor 2, Supervisor 1.

Ich möchte das so sortieren, dass der Chairman zuerst und dann Supervisor 1, Supervisor 2 usw. in der Reihenfolge unterhalb des Chairman aufgeführt werden.

Ich kann einfach nicht meinen Kopf darum drehen …

Jede Eingabe würde geschätzt werden. Wenn mehr Details benötigt werden, lass es mich wissen.

Solutions Collecting From Web of "Advanced orderby mit mehreren Meta-Abfragen"

Ich habe alles versucht, um zu versuchen, innerhalb der WordPress-functionen zu sortieren, konnte aber nicht erreichen, was ich wollte. Ich folgte dem Rat von Pieter Goosen und machte einen Usort (). Hier ist was ich jetzt habe:

WP_Query $ Argumente

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

Benutzerdefinierte Sortierfunktion

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

Nun, es sortiert, wie ich Town Chairman> Supervisor 1> 2> 3> 4 wollte

Vielen Dank für Ihre Anregungen.