Sortează articolele după Dată (DESC) și după Titlu (ASC)
Î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.

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ă.

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

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!
