WP_Query - Ergebnisse nach Metawert ordnen

49

Ich habe nachgesehen und noch keine Antwort gefunden, die bis jetzt funktioniert. Ich habe eine WP_Query mit den folgenden Argumenten:

$args = array(
    'post_status' => 'publish',
    'post_type' => 'listing',
    'meta_key' => 'client_feedback_score',
    'orderby' => 'client_feedback_score',
    'order' => 'DESC'
        );

$query = new WP_Query($args);

Ich möchte die Ergebnisse nach dem benutzerdefinierten Post-Feld "client_feedback_score" (niedrigster bis höchster Wert) sortieren. Aber das scheint nicht zu funktionieren ... kann mich jemand in die richtige Richtung weisen?

BEARBEITEN (Gelöst):

Dank Milos Antwort ist hier der Arbeitscode für die Bestellung nach einem numerischen Meta-Wert:

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );
Adam Moss
quelle

Antworten:

69

orderbysollte der Name des Schlüssels sein meta_value_numoder meta_valuenicht. Siehe WP_Query orderby-Parameter .

Milo
quelle
Arbeitete eine Belohnung, Prost Kumpel.
Adam Moss
5
Kleiner Hinweis, wenn der meta_keynoch nicht für den Beitrag existiert, wird der Beitrag ignoriert.
Adamj
1
@RobBenz Sie sollten wahrscheinlich eine neue Frage zu diesem Thema stellen. Schritt 1 Weisen Sie Ihrem Metaschlüssel einen beliebigen Wert zu. Nennen wir ihn my_meta_key, damit jeder Beitrag die von Ihnen gewünschte Reihenfolge generiert. Schritt 2 Sie setzen meta_keyin Ihrer Abfrage auf my_meta_key. Dadurch wird WordPress angewiesen, nach Posts mit diesem Schlüssel zu suchen. Schritt 3 Setzen Sie orderbyin Ihrer Abfrage auf meta_value_num. Dies weist WordPress an, nicht nur Posts mit abzufragen my_meta_key, sondern auch numerisch nach diesem Schlüssel zu ordnen. Dieses Abfrageargument ist der einzige Ort, den Sie jemals sehen oder benutzen werden meta_value_num.
Milo
1
@adamj ist es eine Problemumgehung das? Ich muss alle Posts sortieren, unabhängig davon, ob meta_key für den Post vorhanden ist oder nicht.
Unbreak
1
@ Unbreak die einfache Lösung ist, über alle Beiträge zu analysieren und diese hinzuzufügen meta_key, bevor die
Bestellabfrage ausgeführt wird