Sortarea rezultatelor după nume și ordine crescătoare în Archive.php
Î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.
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;
};

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

@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).

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

<?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; ?>

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.

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/
