Benutzerdefinierte Post-Reihenfolge bei Verwendung der OR-Beziehung

Ich habe eine benutzerdefinierte Beitragstyp namens Fakultät. Sie können vom Typ MCT, MLT oder MT sein.

MCT -> A, B MLT -> C, E MT -> C, D 

Ich möchte alle MLT und MT Fakultät auf einer Seite in der Reihenfolge nach Nachnamen auflisten -> C, D, E

Ich habe ein Problem mit der OR-Beziehung, wenn es mit orderby verwendet wird, wo es alle Fakultät zurückgibt, die MLT oder MT sind oder einen Nachnamen haben (der jeder ist). Die AND-Beziehung funktioniert korrekt und gibt nur C zurück.

Meine WP_Query-Argumente sind:

 Array( [post_type] => faculty [order] => ASC [orderby] => meta_value [meta_key] => faculty_last_name [meta_query] => Array( [relation] => OR [0] => Array( [key] => faculty_MLT [value] => MLT [compare] => = ) [1] => Array( [key] => faculty_MT [value] => MT [compare] => = ) ) ) 

Das erstellte SQL ist:

 SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id) WHERE 1=1 AND wp_posts.post_type = 'faculty' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND (wp_postmeta.meta_key = 'faculty_last_name' -->OR (mt1.meta_key = 'faculty_MLT' AND CAST(mt1.meta_value AS CHAR) = 'MLT') OR (mt2.meta_key = 'faculty_MT' AND CAST(mt2.meta_value AS CHAR) = 'MT') ) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value ASC LIMIT 0, 10 

Wenn ich das -> ODER zu AND ändere, gibt die Abfrage das korrekte Ergebnis zurück.

Gibt es eine Möglichkeit, orderby zusammen mit relation => OR in wp_query zu verwenden?

Solutions Collecting From Web of "Benutzerdefinierte Post-Reihenfolge bei Verwendung der OR-Beziehung"

Das ist ein bisschen schwierig zu basteln, ohne Daten zum Anprobieren.

Was mir in deiner Architektur so merkwürdig vorkommt, dass du es als Typ mit drei möglichen Werten beschreibst, aber davon hast du drei (vermute ich) verschiedene Schlüssel dafür. Es würde für mich mehr Sinn ergeben, wenn du einen einzigen Schlüssel faculty_type (zB faculty_type ).

Wie es meine beste Schätzung ist, würde versuchen, es umzukehren und zu konditionieren, dass Fakultät nicht der verbleibende dritte Typ stattdessen ist. Nicht klar, wenn Sie irgendwelche Einträge haben, die in keiner Fakultät sind.