WP_Query - Sortuj wyniki według wartości meta

49

Rozejrzałem się i nie widziałem odpowiedzi, która działa jak dotąd. Mam WP_Query z następującymi argumentami:

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

$query = new WP_Query($args);

Chcę uporządkować wyniki według niestandardowego pola postu „client_feedback_score”, od najniższej do najwyższej. Ale to nie działa ... czy ktoś może skierować mnie w dobrym kierunku?

EDYCJA (ROZWIĄZANE):

Dzięki odpowiedzi Milo, oto działający kod do zamawiania według liczbowej meta wartości:

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );
Adam Moss
źródło

Odpowiedzi:

69

orderbypowinna być meta_value_numlub meta_valuenie nazwa klucza. Zobacz parametry WP_Query orderby .

Milo
źródło
Pracowałem przysmak, na zdrowie kolego.
Adam Moss,
5
Mała uwaga, jeśli meta_keynie istnieje jeszcze dla posta, post zostanie zignorowany.
adamj
1
@RobBenz Prawdopodobnie powinieneś zacząć nowe pytanie na ten temat. Krok 1 Przypisz dowolną wartość do swojego meta-klucza, nazwijmy go my_meta_key, aby każdy post wygenerował dowolne zamówienie. Krok 2 W meta_keyzapytaniu ustawiłeś wartość my_meta_key. To mówi WordPressowi, aby wyszukiwał posty, które mają ten klucz. Krok 3 Ustaw orderbyw zapytaniu wartość meta_value_num. To mówi WordPressowi, że nie tylko wysyła zapytania do postów my_meta_key, ale także porządkuje numerycznie według tego klucza. Ten argument zapytania jest jedynym miejscem, które kiedykolwiek zobaczysz lub użyjesz meta_value_num.
Milo,
1
@adamj, czy można to obejść? Potrzebuję posortować wszystkie posty, niezależnie od tego, czy meta_key istnieje dla tego postu, czy nie.
Unbreak
1
@unbreak proste rozwiązanie polega na przeanalizowaniu wszystkich postów i dodaniu meta_keyich przed uruchomieniem zapytania dotyczącego zamówienia
adamj