Sắp xếp kết quả theo tên và thứ tự asc trên Archive.php


15

Tôi hiện đang sử dụng mã sau đây để liệt kê các bài đăng trong Archive.php nhưng tôi muốn các kết quả được sắp xếp theo tên theo thứ tự tăng dần, tôi đã kiểm tra codex nhưng câu trả lời không rõ ràng với tôi, làm thế nào tôi có thể làm việc này?

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

Cảm ơn trước.


nếu bạn đang sử dụng truy vấn tùy chỉnh trong archive.php, bạn có thể hiển thị nó không? có thể đăng kho lưu trữ đầy đủ.php trên pastie.org và cập nhật câu trả lời của bạn với liên kết?
Hameedullah Khan

Câu trả lời:


35

Cách dễ nhất để làm điều này là sử dụng một cái móc ( pre_get_postscái móc) để thay đổi thứ tự. Nhưng bạn nên kiểm tra xem truy vấn đó có phải là một truy vấn mà bạn muốn thay đổi thứ tự không! ( is_archive()hoặc is_post_type_archive()nên là đủ.)

Ví dụ: đặt các mục sau trong hàm của chủ đề của bạn.php ...

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

Xin chào, bạn có thể hiển thị cách đặt hàng mặc định hoạt động không? Một số liên kết nếu có thể
Cảm ơn

@LediteshVMVilla WP được phát triển như một blog, vì vậy thứ tự hợp lý / mặc định là bởi post_date DESC (= giảm dần), vì vậy đó là mới nhất trước tiên. Nếu bạn đang sử dụng WP cho một cái gì đó mà thời gian ít liên quan hơn (hầu hết các loại danh sách, như bộ sưu tập hồ sơ, công thức nấu ăn, bảng chú giải, ...) bạn sẽ muốn đặt hàng thường xuyên post_title ASC (= Tăng dần, do đó, theo thứ tự chữ cái với các chữ cái đứng trước).
dùng3445853

Cảm ơn. Hoạt động tốt cho trang lưu trữ phân loại của tôi.
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
Bạn có thể vui lòng giải thích tại sao điều này giúp OP? Xin vui lòng, luôn luôn thêm một lời giải thích trên đầu của một đoạn mã. Cảm ơn.
kaiser

Câu hỏi là Sắp xếp kết quả theo tên và thứ tự asc trên Archive.php. Có lẽ theo người trả lời mã này sẽ Sắp xếp kết quả theo tên và thứ tự asc trên Archive.php?
Jon

0

xa hơn với câu trả lời của Stephen, nếu bạn muốn chỉ truy vấn và đặt hàng theo tiêu đề, bạn có thể sử dụng điều này trong tệp mẫu của mình:

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

query_posts($args);

5
Trực tiếp từ tham chiếu mã WordPress - "Hàm này sẽ ghi đè hoàn toàn truy vấn chính và không dành cho sử dụng bởi các plugin hoặc chủ đề. Cách tiếp cận quá đơn giản để sửa đổi truy vấn chính có thể gặp vấn đề và nên tránh ở bất cứ nơi nào có thể. các trường hợp, có nhiều tùy chọn tốt hơn, hiệu quả hơn để sửa đổi truy vấn chính, chẳng hạn như thông qua hành động 'pre_get_posts' trong WP_Query. " Dòng dưới cùng @Stephen Harris có cách chính xác để thực hiện điều này. developer.wordpress.org/reference/fiances/query_posts
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.