Sortează articolele după Dată (DESC) și după Titlu (ASC)

3 iul. 2017, 01:48:30
Vizualizări: 40.4K
Voturi: 6

În prezent, articolele site-ului meu sunt ordonate alfabetic după titlu:

/* Ordonează Articolele Alfabetic */
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' );

Acum, vreau să sortez articolele alfabetic după titlu (crescător), dar și după dată (descrescător).

Ca în acest exemplu:

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

Modificarea parametrului orderby în $query->set( 'orderby', 'date title' ); nu rezolvă problema mea deoarece am nevoie să afișez mai întâi articolele cele mai recente.

Aș aprecia orice alte idei.

0
Toate răspunsurile la întrebare 1
3
10

Puteți transmite un array către query așa cum este descris în exemplul următor din Codex:

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

$query = new WP_Query( $args );

În cazul dvs. va arăta cam așa:

/* Sortează postările alfabetic */
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' );

Dacă doriți ca post_date să fie filtrul principal, trebuie să schimbați poziția sa în array. Acum codul va afișa toate postările în ordine alfabetică începând cu cele mai noi după dată.

3 iul. 2017 02:06:25
Comentarii

Am îmbunătățit codul, verifică acum dacă funcționează pentru tine

Cesar Henrique Damascena Cesar Henrique Damascena
3 iul. 2017 02:52:05

Da, prietene, eram pe punctul de a scrie un răspuns spunând că am pus post_date primul în codul tău și a funcționat, dar tu ai schimbat mai întâi răspunsul. Da, a funcționat. Mulțumesc mult!

drabello drabello
3 iul. 2017 02:57:36

Mă bucur că a funcționat pentru tine :D, dacă poți te rog marchează-l ca răspuns corect sau postează-ți răspunsul, va ajuta alte persoane cu aceeași întrebare, mulțumesc!

Cesar Henrique Damascena Cesar Henrique Damascena
3 iul. 2017 03:02:34