it-swarm.com.de

Beiträge nach Datum (DESC) und nach Titel (ASC) sortieren

Derzeit sind die Beiträge meiner Website alphabetisch nach Titel sortiert:

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

Nun möchte ich die Beiträge alphabetisch nach Titel (aufsteigend), aber auch nach Datum (absteigend) sortieren.

Wie dieses Beispiel:

  • AUDI A1 Ambition 1.4 (veröffentlicht am 01.01.17)
  • AUDI A1 Ambition 1.4 (veröffentlicht am 01/01/16)
  • AUDI A1 Ambition 1.4 (veröffentlicht am 01/01/15)
  • BMW 120i Active Flex 2.0 (veröffentlicht am 01.01.17)
  • BMW 120i Active Flex 2.0 (veröffentlicht am 01/01/16)
  • BMW 120i Active Flex 2.0 (veröffentlicht am 01/01/15)
  • Citroen ...

Das Ändern des Parameters orderby in $query->set( 'orderby', 'date title' ); löst mein Problem nicht, da ich zuerst die neuesten Beiträge anzeigen muss.

Ich würde mich über weitere Ideen freuen.

3
drabello

Sie können ein Array an die query übergeben, wie das folgende Beispiel im Codex zeigt:

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

$query = new WP_Query( $args );

In Ihrem Fall wird etwa so aussehen:

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

Wenn Sie den post_date als primären Filter verwenden möchten, müssen Sie seine Position im Array ändern. Der Code fragt nun alle Beiträge alphabetisch ab, beginnend mit dem neuesten post_date.