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

Odpowiedzi:


69

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.