Sortarea rezultatelor după nume și ordine crescătoare în Archive.php

23 ian. 2012, 12:03:51
Vizualizări: 60.4K
Voturi: 21

În prezent folosesc următorul cod pentru a lista articolele în Archive.php, dar vreau ca rezultatele să fie ordonate după nume în ordine crescătoare. Am verificat codex-ul dar răspunsul nu este clar pentru mine, cum pot face acest lucru să funcționeze?

<?php $post = $posts[0]; // ?>

Mulțumesc anticipat.

1
Comentarii

dacă folosești o interogare personalizată în archive.php, poți să o arăți? poate postează întregul fișier archive.php pe http://pastie.org și actualizează răspunsul cu link-ul?

Hameedullah Khan Hameedullah Khan
23 ian. 2012 12:37:35
Toate răspunsurile la întrebare 3
5
54

Cea mai ușoară metodă de a face acest lucru este să folosești un hook (hook-ul pre_get_posts) pentru a schimba ordinea. Dar ar trebui să verifici dacă interogarea este una pentru care dorești să modifici ordinea! (is_archive() sau is_post_type_archive() ar trebui să fie suficiente.)

De exemplu, adaugă următoarele în fișierul functions.php al temei tale...

add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //Dacă dorești să se aplice pentru arhiva unui tip personalizat de postare, folosește: is_post_type_archive( $post_type )
           //Setează ordinea ASC sau DESC
           $query->set( 'order', 'ASC' );
           //Setează criteriul de ordonare
           $query->set( 'orderby', 'title' );
        endif;    
    };
23 ian. 2012 12:32:45
Comentarii

Bună, vei putea să arăți cum funcționează ordonarea implicită? Câteva link-uri dacă este posibil. Mulțumesc.

User User
8 sept. 2019 00:34:36

@LatheeshVMVilla WP este dezvoltat ca un blog, așa că ordonarea implicită logică este după post_date DESC (=descendent), adică cele mai noi postări primele. Dacă folosești WP pentru ceva unde timpul este mai puțin relevant (majoritatea tipurilor de liste, precum colecția ta de înregistrări, rețete, un glosar, ...) vei dori adesea să ordonezi după post_title ASC (=Ascendent, deci alfabetic după titlu cu numerele înaintea literelor).

user3445853 user3445853
3 dec. 2019 15:25:46

Mulțumesc. Funcționează bine pentru pagina mea de arhivă a taxonomiei.

Sema Hernández Sema Hernández
5 feb. 2020 18:12:15

A funcționat perfect. Mulțumesc!

Mark P Mark P
17 iun. 2020 21:59:29

A funcționat, dar mi-a distrus meniul. Există mai multe interogări pe pagina de arhivă, pentru a schimba doar cea necesară, am reușit cu if(is_post_type_archive($post_type) && $query->query["post_type"]==$post_type)

Fanky Fanky
26 aug. 2021 21:10:51
2
<?php
// adăugăm acest cod pentru a afișa toate articolele din
// Glosar sortate alfabetic
if ( is_category('Glossary') )  {
    $args = array( 
        'posts_per_page' => -1,  // -1 înseamnă toate articolele
        'orderby'        => 'title',  // sortează după titlu
        'order'          => 'ASC'  // ordine crescătoare (A-Z)
    );
    $glossaryposts = get_posts( $args );
}
foreach( $glossaryposts as $post ) : setup_postdata( $post );
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
20 ian. 2017 23:32:50
Comentarii

Poți să explici, te rog, de ce acest lucru ajută OP? Te rog, adaugă întotdeauna o explicație înaintea unui fragment de cod. Mulțumesc.

kaiser kaiser
21 ian. 2017 01:12:09

Întrebarea era Sortează rezultatele după nume și ordine crescătoare în Archive.php. Se presupune că, conform răspunsului, acest cod va sorta rezultatele după nume și ordine crescătoare în Archive.php?

Jon Jon
11 dec. 2019 16:37:01
1

în continuare la răspunsul lui Stephen, dacă dorești doar să interoghezi și să sortezi după titlu, poți folosi acest cod în fișierul tău de șablon:

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

query_posts($args);
23 ian. 2012 13:38:34
Comentarii

Direct din referința de cod WordPress - "Această funcție va suprascrie complet interogarea principală și nu este destinată utilizării de către plugin-uri sau teme. Abordarea sa excesiv de simplistă de modificare a interogării principale poate fi problematică și ar trebui evitată oriunde este posibil. În majoritatea cazurilor, există opțiuni mai bune și mai performante pentru modificarea interogării principale, cum ar fi prin acțiunea 'pre_get_posts' în cadrul WP_Query."

În concluzie, @Stephen Harris are metoda corectă de a realiza acest lucru.

https://developer.wordpress.org/reference/functions/query_posts/

Michael Michael
13 oct. 2016 17:33:30