Valori multipli di orderby in WP_Query
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?

@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/

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

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