Ordenar publicaciones por fecha (DESC) y por título (ASC)

2

Actualmente, las publicaciones de mi sitio web están ordenadas alfabéticamente por título:

/* Order Posts Alphabetically */
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' );

Ahora, quiero ordenar las publicaciones alfabéticamente por título (ascendente), pero también por fecha (descendente).

Me gusta este ejemplo:

  • AUDI A1 Ambition 1.4 (publicado el 01/01/17)
  • AUDI A1 Ambition 1.4 (publicado el 01/01/16)
  • AUDI A1 Ambition 1.4 (publicado el 01/01/15)
  • BMW 120i Active Flex 2.0 (publicado el 01/01/17)
  • BMW 120i Active Flex 2.0 (publicado el 01/01/16)
  • BMW 120i Active Flex 2.0 (publicado el 01/01/15)
  • Citroen ...

Cambiar el parámetro orderby a $query->set( 'orderby', 'date title' ); no resuelve mi problema porque necesito mostrar primero las publicaciones más recientes.

Apreciaría cualquier otra idea.

    
pregunta drabello 03.07.2017 - 00:48

1 respuesta

4

Puede pasar una matriz al query como se describe en el siguiente ejemplo en Codex :

$args = array(
'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);

$query = new WP_Query( $args );

En tu caso será algo como esto:

/* Order Posts Alphabetically */
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' );

Si desea que post_date sea el filtro principal, debe cambiar su posición en la matriz, ahora el código consultará todas las publicaciones en orden alfabético, comenzando por la fecha de publicación más reciente.

    
respondido por el Cesar Henrique Damascena 03.07.2017 - 01:06

Lea otras preguntas en las etiquetas