Sortuj według wielu meta-kluczy i wartości meta [zamknięte]

16

Jak ustawić kolejność wielu kluczy meta według wartości meta, czy ktoś może podać jakiś przykład?

Dhiraj Suthar
źródło
4
Witamy w WPSE - abyśmy mogli Ci pomóc, musisz nam pomóc. Czy możesz opisać bardziej szczegółowo, co próbujesz zrobić, i być może opublikować próbki kodu.
TheDeadMedic

Odpowiedzi:

32

meta_queryto tablica meta klauzul. Na przykład:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Możesz użyć tablicy asocjacyjnej z kluczem dla każdej meta klauzuli:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Następnie możesz użyć tych kluczy w order_byargumencie, używając jednego:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

Lub więcej klauzul:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Przykład zaczerpnięty z tego postu w blogu Make WordPres Core.

cybmeta
źródło
nie zapomnij dodać typu meta klucza / wartości. wpłynie to na wyniki. domyślnie wp będzie traktować twoją meta jako ciąg.
Aleksander Iwaszczenko
3
Ale co, jeśli nie chcę zwracać wyników tylko w stanie Wisconsin? Chcę, aby wszystkie stany zostały zwrócone i chcę wierszy, w których może być miasto lub nie, i nadal uporządkować według tych 2 pól. np. brak klauzuli WHERE - po prostu ZAMÓW PRZEZ.
Felix Eve