Sonuçları Archive.php'de ada göre & sıraya göre sırala


15

Şu anda Archive.php gönderileri listelemek için aşağıdaki kodu kullanın ama sonuçların artan sırayla ada göre sipariş etmek istiyorum, kodeks kontrol ettim ama cevap bana açık değil, nasıl bu çalışma alabilirim?

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

Şimdiden teşekkürler.


archive.php dosyasında özel sorgu kullanıyorsanız lütfen gösterebilir misiniz? archtie.php dosyasının tamamını pastie.org'da yayınlayabilir ve cevabınızı linkle güncelleyebilir misiniz?
Hameedullah Khan

Yanıtlar:


36

Bunu yapmanın en kolay yolu pre_get_posts, sırayı değiştirmek için bir kanca ( kanca) kullanmaktır. Ancak sorguyu, sırasını değiştirmek istediğiniz sorgu olup olmadığını kontrol etmelisiniz! ( is_archive()veya is_post_type_archive()yeterli olmalıdır.)

Örneğin, temanızın function.php dosyasına aşağıdakileri ekleyin:

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

Merhaba, varsayılan siparişin nasıl çalıştığını gösterebilecek misiniz? Mümkünse bazı bağlantılar.
Teşekkürler

@LatheeshVMVilla WP bir blog olarak geliştirildiğinden, mantıklı / varsayılan sıralama post_date DESC (= azalan) 'dır, bu yüzden ilk önce en yeni olanıdır. WP'yi zamanın daha az alakalı olduğu bir şey için kullanıyorsanız (kayıt koleksiyonunuz, tarifleriniz, bir sözlük vb. Gibi çoğu liste türü) genellikle post_title ASC (= Artan, başlığa göre alfabetik) sipariş etmek istersiniz harflerden önceki sayılarla).
user3445853

Teşekkürler. Sınıflandırma arşiv sayfam için iyi çalışıyor.
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; ?>

1
Bunun OP'ye neden yardımcı olduğunu açıklayabilir misiniz ? Lütfen, her zaman bir kod parçasının üstüne bir açıklama ekleyin. Teşekkürler.
kaiser

Soru Archive.php'de sonuçları ada göre & sıraya göre sırala idi. Muhtemelen cevaplayana göre bu kod sonuçları Archive.php'de ada göre & sıraya göre sıralar mı?
Jon

0

Stephen'ın cevabına ek olarak, sadece başlığa göre sorgulamak ve sipariş vermek istiyorsanız, bunu şablon dosyanızda kullanabilirsiniz:

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

query_posts($args);

5
Doğrudan WordPress kod referansından - "Bu işlev ana sorguyu tamamen geçersiz kılar ve eklentiler veya temalar tarafından kullanılmak üzere tasarlanmamıştır. Ana sorguyu değiştirmek için aşırı basit yaklaşımı sorunlu olabilir ve mümkün olduğunca kaçınılmalıdır. durumlarda, ana sorguyu değiştirmek için WP_Query içindeki 'pre_get_posts' eylemi gibi daha iyi ve daha performanslı seçenekler vardır. Sonuç olarak @Stephen Harris bunu başarmanın doğru yoluna sahiptir. developer.wordpress.org/reference/functions/query_posts
Michael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.