Valori multipli di orderby in WP_Query

20 set 2012, 18:50:22
Visualizzazioni: 58.5K
Voti: 22

Sto cercando di creare una query per ordinare utilizzando più valori orderby. Ecco quello che ho finora:

    $dept_id=2;
    $query=new WP_Query(array(
            'post_type'=>'wpcontactus',
            'nopaging'=>true,
            'post_status'=>array('publish', 'pending', 'future'),
            'meta_key'=>'wcu_dept',
            'meta_value'=>$dept_id,
            'orderby'=>'title',
            'order'=>'ASC'
    ));

Sto cercando di eseguire una query su un tipo di post personalizzato e, all'interno di quel tipo di post, eseguire una query su un valore meta.

Poi, vorrei prima ordinare per menu_order in modo ascendente, quindi per un valore meta personalizzato wcu_lastname in modo ascendente. Tuttavia, il valore orderby non sembra poter accettare un array.

Come posso ordinare la query utilizzando più valori orderby?

1
Commenti

Se non sbaglio, basta aggiungerli separati da spazi.

kaiser kaiser
20 set 2012 19:05:12
Tutte le risposte alla domanda 3
0
37

@Musa come possiamo impostare valori multipli per l'ordinamento dei campi? Mi stavo ponendo la stessa domanda e ho trovato questo:

Nella versione 4.0, puoi ora passare un array a WP_Query come valore per orderby.

La sintassi è la seguente:

$q = new WP_Query( array( 
    'orderby' => array( 
       'title'      => 'DESC', 
       'menu_order' => 'ASC' 
    ) 
));

Guarda qui per maggiori dettagli: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/

21 gen 2015 10:47:29
1
11
$query=new WP_Query(array(
                'post_type'=>'wpcontactus', // Tipo di post personalizzato
                'nopaging'=>true, // Mostra tutti i risultati senza paginazione
                'post_status'=>array('publish', 'pending', 'future'), // Stato dei post
                'meta_query'=>array(
                                array('key'=>'wcu_dept','value'=>$dept_id, 'compare'=>'='), // Query meta: dipartimento specifico
                            ),
                'meta_key'=>'wcu_firstname', // Campo meta per l'ordinamento
                'orderby'=>'menu_order wcu_firstname', // Ordina per menu_order e poi per nome
                'order'=>'ASC' // Ordine ascendente
        ));

Utilizzando il suggerimento di @kaiser e l'opzione meta_query, sono riuscito a ottenere la query che cercavo.

20 set 2012 19:15:06
Commenti

come possiamo impostare più valori di ordinamento per i campi? Ad esempio: ASC per menu_order, DESC per date

Musa Musa
20 mar 2014 13:44:01
0
    $args = [
        's'              => $keyword,
        'post_type'      => ['page'],
        'paged'          => $paged,
        'posts_per_page' => PAGE_LIMIT,
        'tax_query' => [
             [
                  'taxonomy'         => TAX_RESOURCE_PAGE,
                  'field'            => 'slug',
                  'terms'            => $c_term_slug
             ],
        ],
        'post_status'    => 'publish',
        'meta_key'       => 'order',
        'meta_type'      => 'NUMERIC',
        'orderby'        => [
             'meta_value_num' => 'ASC',
             'ID' => 'DESC',
        ],
    ];
    $wp_query = new WP_Query( $args );

il mio codice è un esempio.

26 lug 2019 06:12:24