So bestellen Sie Posts in wp_query nach der Benutzerrolle (2 Rollen im Array)

Ich verwende den folgenden Code aus dieser Antwort: Wie kann ich die letzten Posts nach Benutzerrolle abrufen?

 'friends' ) ); $friend_ids = array(); foreach( $friends as $friend ) $friend_ids[] = $friend->ID; $news = new WP_Query( array( 'author' => implode( ',', $friend_ids ), 'post_type' => 'news', 'paged' => get_query_var('paged') ) ); ?> 

Ich habe dem Array eine weitere WP-Rolle hinzugefügt, so dass es beide greift. Beispielsweise:

 $friends = get_users( array( 'role' => 'friends, enemies' ) ); 

Kann man die Posts jetzt irgendwie nach der Rolle bestellen? so zeigt es zuerst alle Freunde an, gefolgt von allen Feinden usw. Momentan listet es alle Hokuspokus wie erwartet auf.

EDIT: Entschuldigung, hätte wahrscheinlich keine andere Frage gestellt, nicht sicher, warum ich das getan habe. Ist es möglich, dies zu tun, ohne benutzerdefinierte Felder zu verwenden?

Das Problem, das ich bei benutzerdefinierten Feldern gefunden habe, ist Folgendes: Wenn ein Benutzer die Rollen geändert hat (aufgrund von Mitgliedsstufen), werden die Posts nicht korrekt sortiert, bis der Post (vom Autor, der sich geändert hat) mit seinem neuen benutzerdefinierten Feldwert gespeichert wurde.

Solutions Collecting From Web of "So bestellen Sie Posts in wp_query nach der Benutzerrolle (2 Rollen im Array)"

Es ist möglich mit einer hässlichen benutzerdefinierten Abfrage, aber um sich selbst eine Menge Zeit zu sparen, wäre eine einfachere Lösung, jedem Beitrag mit der Benutzerrolle ein benutzerdefiniertes Feld hinzuzufügen, dann wäre Ihre Abfrage viel glatter, sagen Sie beispielsweise, dass Sie ein benutzerdefiniertes Feld haben `u_role ‘dann sollte deine Abfrage so aussehen:

 $news = new WP_Query( array( 'author' => implode( ',', $friend_ids ), 'post_type' => 'news', 'paged' => get_query_var('paged'), 'meta_key' => 'u_role', 'orderby' => 'meta_value', 'order' => 'DESC') );