Urutkan hasil berdasarkan nama & pesanan di Archive.php

15

Saat ini saya menggunakan kode berikut untuk daftar posting di Archive.php tapi saya ingin hasilnya dipesan dengan nama dalam urutan menaik, saya telah memeriksa kodeks tetapi jawabannya tidak jelas bagi saya, bagaimana saya bisa membuatnya bekerja?

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

Terima kasih sebelumnya.

Dave Burns
sumber
jika Anda menggunakan kueri khusus di archive.php, bisakah Anda menunjukkannya? dapat memposting archive.php lengkap di pastie.org dan memperbarui jawaban Anda dengan tautan?
Hameedullah Khan

Jawaban:

36

Cara termudah untuk melakukan ini adalah dengan menggunakan pengait ( pre_get_postshook) untuk mengubah urutan. Tetapi Anda harus memeriksa bahwa kueri itu adalah salah satu yang ingin Anda ubah urutannya! ( is_archive()atau is_post_type_archive()harus cukup.)

Misalnya, letakkan yang berikut ini di functions.php tema Anda ...

add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
           //Set the order ASC or DESC
           $query->set( 'order', 'ASC' );
           //Set the orderby
           $query->set( 'orderby', 'title' );
        endif;    
    };
Stephen Harris
sumber
Hai, apakah Anda dapat menunjukkan bagaimana cara kerja pemesanan default? Beberapa tautan jika memungkinkan
.Terima
@LatheeshVMVilla WP dikembangkan sebagai blog, jadi pemesanan yang masuk akal / default adalah dengan post_date DESC (= menurun), jadi itu yang terbaru-post-pertama. Jika Anda menggunakan WP untuk sesuatu di mana waktu kurang relevan (sebagian besar jenis daftar, seperti koleksi catatan Anda, resep, glosarium, ...) Anda akan ingin memesan ASC sering post_title (= Naik, jadi abjad berdasarkan judul dengan nomor huruf sebelumnya).
user3445853
Terima kasih. Bekerja dengan baik untuk halaman arsip taksonomi saya.
Sema Hernández
1
<?php
// we add this, to show all posts in our
// Glossary sorted alphabetically
if ( is_category('Glossary') )  {
    $args = array( 
        'posts_per_page' => -1, 
        'orderby'        => 'title', 
        'order'          => 'ASC' 
    );
    $glossaryposts = get_posts( $args );
}
foreach( $glossaryposts as $post ) : setup_postdata( $post );
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
Abdelfattah Saied Baraka
sumber
1
Bisakah Anda jelaskan mengapa ini membantu OP? Tolong, selalu tambahkan penjelasan di atas sepotong kode. Terima kasih.
kaiser
Pertanyaannya adalah Urutkan hasil berdasarkan nama & pesanan di Archive.php. Agaknya menurut penjawab kode ini akan mengurutkan hasil berdasarkan nama & pesanan di Archive.php?
Jon
0

lebih jauh ke jawaban Stephen, jika Anda hanya ingin bertanya dan memesan berdasarkan judul, Anda bisa menggunakan ini dalam file template Anda:

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

query_posts($args);
wah
sumber
5
Langsung dari referensi kode WordPress - "Fungsi ini akan sepenuhnya mengesampingkan kueri utama dan tidak dimaksudkan untuk digunakan oleh plugin atau tema. Pendekatannya yang terlalu sederhana untuk memodifikasi kueri utama dapat menjadi masalah dan harus dihindari sedapat mungkin. Di sebagian besar kasus, ada opsi yang lebih baik, lebih banyak performan untuk memodifikasi kueri utama seperti melalui tindakan 'pre_get_posts' dalam WP_Query. " Intinya @Stephen Harris memiliki cara yang benar untuk mencapai ini. developer.wordpress.org/reference/functions/query_posts
Michael