Ordina per più meta chiave e meta valore [chiuso]


16

Come posso impostare più meta-chiavi in ​​ordine di meta-valore, qualcuno può darmi qualche esempio?


4
Benvenuto in WPSE: per noi per aiutarti, devi aiutarci. Puoi descrivere più in dettaglio cosa stai cercando di fare e forse pubblicare alcuni esempi di codice.
TheDeadMedic

Risposte:


31

meta_queryè una matrice di meta clausole. Per esempio:

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

Puoi usare un array associativo, con una chiave per ogni meta clausola:

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

Quindi, puoi usare quelle chiavi order_bynell'argomento, con una:

$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.
) );

O più clausole:

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

Esempio tratto da questo post nel blog Make WordPres Core.


non dimenticare di aggiungere il tipo di meta chiave / valore. influenzerà i risultati. per impostazione predefinita, wp tratterà la tua meta come una stringa.
Alexander Ivashchenko,

3
Ma cosa succede se non voglio restituire risultati solo se lo stato è Wisconsin? Voglio che tutti gli stati vengano restituiti e voglio righe in cui potrebbe esserci o meno una città e comunque ordinarle per quei 2 campi. ad es. nessuna clausola WHERE - solo un ORDER BY.
Felix Eve
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.