Ordinare i post per Data (DESC) e per Titolo (ASC)

3 lug 2017, 01:48:30
Visualizzazioni: 40.4K
Voti: 6

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.

0
Tutte le risposte alla domanda 1
3
10

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.

3 lug 2017 02:06:25
Commenti

Ho migliorato il codice, ora vedi se funziona per te

Cesar Henrique Damascena Cesar Henrique Damascena
3 lug 2017 02:52:05

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!

drabello drabello
3 lug 2017 02:57:36

Sono felice che abbia funzionato per te :D, se puoi per favore segnala come risposta corretta o pubblica la tua risposta, aiuterà altre persone con la stessa domanda, grazie!

Cesar Henrique Damascena Cesar Henrique Damascena
3 lug 2017 03:02:34