Ordinamento multiplo per campi personalizzati con 'orderby' in 'WP_Query'
Sto cercando di ordinare gli articoli del blog prima per 'città' e poi per 'nome_via' all'interno di ogni città. Non riesco a far funzionare l'ordinamento alfabetico per 'nome_via'. Sto usando WP_Query:
<?php
$args = array(
'post_type' => 'property',
'meta_query' => array(
array(
'relation' => 'AND',
array(
'meta_key' => 'city',
'orderby' => 'meta_value',
'order' => 'ASC'
),
array(
'meta_key' => 'street_name',
'orderby' => 'meta_value',
'order' => 'ASC'
),
)
)
);
?>
Qualche idea?

meta_query
e orderby
sono parametri separati, devi semplicemente combinarli in un array. Dovrai gestirli uno dopo l'altro.
Ad esempio:
<?php
$args = array(
'post_type' => 'property',
'meta_query' => array(
array(
'relation' => 'AND',
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
'street_clause' => array(
'key' => 'street_name',
'compare' => 'EXISTS',
),
)
)
'orderby' => array(
'city_clause' => 'desc',
'street_clause' => 'desc',
)
)
?>
https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters

Grazie @Nath! Ho provato questo metodo ma non riesco ancora a far ordinare il nome della via in ordine alfabetico...

Mi ci è voluto un po' per capire come ordinare per valori numerici con più meta key, dato che non puoi semplicemente usare orderby meta_value_num. Invece devi impostare il tipo su numeric nella meta query. Questo è codice funzionante in produzione.
$meta_query = array(
'relation' => 'AND',
'query_one' => array(
'key' => '_rama_ads_type'
),
'query_two' => array(
'key' => '_rama_ads_order',
'type' => 'NUMERIC',
),
);
$order_by = array(
'query_one' => 'ASC',
'query_two' => 'DESC',
);
$query->set( 'meta_query', $meta_query );
$query->set( 'orderby', $order_by );

È necessario ordinare in base a clausole specifiche per meta_query.
Questo link dovrebbe coprire tutto ciò che ti serve per comprendere la sintassi e farlo funzionare.
https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/

Prova questo, potrebbe aiutare.
<?php
$args = array(
'post_type' => 'Sports', // Tipo di post
'meta_query' => array(
array(
'key' => 'league_count', // Chiave meta
'orderby' => 'meta_value_num', /* usa questo solo
se la chiave memorizza un numero altrimenti usa 'meta_value' */
'order' => 'ASC' // Ordine crescente
),
array(
'key' => 'matches_count', // Chiave meta
'orderby' => 'meta_value_num', // Ordina per valore numerico
'order' => 'ASC' // Ordine crescente
),
),
);
$query = new WP_Query( $args ); // Esegui la query
?>
