Ordinare i post per Data (DESC) e per Titolo (ASC)
Attualmente, i post del mio sito web sono ordinati alfabeticamente per titolo:
/* Ordina i Post Alfabeticamente */
function prefix_modify_query_order( $query ) {
if ( is_main_query() ) {
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'prefix_modify_query_order' );
Ora, voglio ordinare i post alfabeticamente per titolo (ascendente), ma anche per data (discendente).
Come in questo esempio:
- AUDI A1 Ambition 1.4 (pubblicato il 01/01/17)
- AUDI A1 Ambition 1.4 (pubblicato il 01/01/16)
- AUDI A1 Ambition 1.4 (pubblicato il 01/01/15)
- BMW 120i Active Flex 2.0 (pubblicato il 01/01/17)
- BMW 120i Active Flex 2.0 (pubblicato il 01/01/16)
- BMW 120i Active Flex 2.0 (pubblicato il 01/01/15)
- Citroen...
Modificare il parametro orderby
in $query->set( 'orderby', 'date title' );
non risolve il mio problema perché ho bisogno di mostrare prima i post più recenti.
Gradirei qualsiasi altro suggerimento.
Puoi passare un array alla query
come mostra il seguente esempio descritto nel Codex:
$args = array(
'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);
$query = new WP_Query( $args );
Nel tuo caso sarà qualcosa di simile a questo:
/* Ordina i post alfabeticamente */
function prefix_modify_query_order( $query ) {
if ( is_main_query() ) {
$args = array( 'post_date' => 'DESC', 'title' => 'ASC' );
$query->set( 'orderby', $args );
}
}
add_action( 'pre_get_posts', 'prefix_modify_query_order' );
Se vuoi che post_date
sia il filtro primario, devi cambiare la sua posizione nell'array. Ora il codice interrogherà tutti i post in ordine alfabetico partendo dalla data più recente.

Sì amico, stavo per scrivere una risposta dicendo che ho messo post_date per primo nel tuo codice e ha funzionato, ma tu hai cambiato la tua risposta prima. Sì, ha funzionato. Grazie mille!
