เรียงลำดับผลลัพธ์ตามชื่อ & เรียงลำดับบน Archive.php


15

ขณะนี้ฉันใช้รหัสต่อไปนี้เพื่อแสดงโพสต์ใน Archive.php แต่ฉันต้องการให้ผลลัพธ์เรียงตามชื่อจากน้อยไปมากฉันตรวจสอบ codex แล้ว แต่คำตอบไม่ชัดเจนสำหรับฉันฉันจะทำงานนี้ได้อย่างไร

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

ขอบคุณล่วงหน้า.


หากคุณใช้การสืบค้นที่กำหนดเองในไฟล์เก็บถาวรของคุณคุณสามารถแสดงมันได้หรือไม่ อาจโพสต์ไฟล์เก็บถาวรฉบับสมบูรณ์ในphp pastie.orgและอัปเดตคำตอบของคุณพร้อมลิงค์ได้หรือไม่
Hameedullah Khan

คำตอบ:


36

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือใช้ hook ( pre_get_postshook) เพื่อเปลี่ยนลำดับ แต่คุณควรตรวจสอบว่าแบบสอบถามเป็นคำถามที่คุณต้องการแก้ไขคำสั่งซื้อ! ( is_archive()หรือ is_post_type_archive()ควรจะเพียงพอ)

ตัวอย่างเช่นวางสิ่งต่อไปนี้ในฟังก์ชั่นของธีมของคุณ ...

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

สวัสดีคุณจะสามารถแสดงให้เห็นว่าการสั่งซื้อเริ่มต้นทำงานอย่างไร ลิงก์บางลิงค์ถ้าเป็นไปได้
ขอบคุณ

@LatheeshVMVilla WP ได้รับการพัฒนาเป็นบล็อกดังนั้นการสั่งซื้อที่สมเหตุสมผล / เป็นค่าเริ่มต้นคือ post_date DESC (= มากไปหาน้อย) ดังนั้นนั่นคือใหม่ล่าสุดที่โพสต์ครั้งแรก หากคุณใช้ WP สำหรับบางสิ่งที่เวลามีความเกี่ยวข้องน้อยลง (รายการส่วนใหญ่เช่นคอลเลกชันบันทึกสูตรคำศัพท์ ... ) คุณจะต้องการสั่งซื้อบ่อยครั้ง post_title ASC (= น้อยไปมากดังนั้นเรียงตามตัวอักษรตามชื่อเรื่อง พร้อมตัวเลขที่อยู่หน้าตัวอักษร)
user3445853

ขอบคุณ ทำงานได้ดีสำหรับหน้าการจัดเก็บภาษีอากรของฉัน
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
คุณช่วยอธิบายได้ว่าทำไมสิ่งนี้ถึงช่วย OP ได้ โปรดเพิ่มคำอธิบายที่ด้านบนของโค้ดเสมอ ขอบคุณ
ไกเซอร์

คำถามคือเรียงลำดับผลลัพธ์ตามชื่อ & เรียงลำดับบน Archive.php สันนิษฐานตามผู้ตอบรหัสนี้จะเรียงลำดับผลลัพธ์ตามชื่อ & เรียงลำดับบน Archive.php?
Jon

0

นอกเหนือจากคำตอบของสตีเฟ่นหากคุณต้องการสอบถามและเรียงลำดับตามชื่อคุณสามารถใช้สิ่งนี้ในไฟล์เทมเพลตของคุณ:

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

query_posts($args);

5
ตรงจากการอ้างอิงรหัส WordPress - "ฟังก์ชั่นนี้จะแทนที่การสืบค้นหลักอย่างสมบูรณ์และไม่ได้มีไว้สำหรับใช้โดยปลั๊กอินหรือธีมวิธีการที่ง่ายเกินไปในการแก้ไขการสืบค้นหลักอาจเป็นปัญหาและควรหลีกเลี่ยงทุกที่ที่ทำได้ กรณีมีตัวเลือกที่ดีกว่าและมีประสิทธิภาพมากขึ้นสำหรับการแก้ไขคิวรีหลักเช่นผ่านการดำเนินการ 'pre_get_posts' ภายใน WP_Query Bottom line @Stephen Harris มีวิธีที่ถูกต้องในการบรรลุเป้าหมายนี้ developer.wordpress.org/reference/functions/query_posts
Michael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.