รายละเอียดด่วน
- query_posts - อย่าใช้ยกเว้นในกรณีขอบที่หายาก
- pre_get_posts - ใช้หากคุณต้องการแก้ไข คิวรี เริ่มต้นบนหน้าเว็บ
- ใหม่ WP_Query - ใช้เพื่อรับผลลัพธ์ที่แตกต่างจากการสืบค้นหลัก
- get_posts - เหมือนกับ WP_Query เพียงแค่ส่งคืนผลลัพธ์ในรูปแบบอาร์เรย์แทน
query_posts
ไม่แนะนำให้ใช้ query_posts อีกต่อไป มีวิธีที่ดีกว่าในการทำสิ่งที่คุณต้องการให้สำเร็จ กำลังพยายามแก้ไขข้อความค้นหาหลักหรือไม่ ใช้การดำเนินการ pre_get_posts เพื่อกรองผลลัพธ์ (ดูด้านล่าง) query_posts จะ โยนข้อความค้นหาหลักดั้งเดิมไปทางด้านข้าง (หลังจากที่เรียกใช้แล้ว) และสร้างแบบสอบถามหลักใหม่ มันแทนที่ตัวแปรส่วนกลางที่เกี่ยวข้องกับการโพสต์ทั้งหมดและส่งผลให้มีการเรียกฐานข้อมูลใหม่อย่างสมบูรณ์ ไม่มีเหตุผลที่คุณไม่ควรเปลี่ยนการสืบค้นที่มีอยู่ ฉันแน่ใจว่ามีบางกรณีที่ควรใช้ขอบ แต่ฉันไม่สามารถคิดออกจากด้านบนของหัวของฉัน ใช้ตัวเลือกใดตัวเลือกหนึ่งด้านล่างเนื่องจากมีความเหมาะสมมากกว่า
pre_get_posts
นี่คือตัวกรอง สิ่งนี้จะแก้ไขคิวรีหลักไปยังหน้า ตัวอย่างเช่นเราต้องการเปลี่ยนจำนวนผลลัพธ์ที่ส่งคืนในหน้าแรก …
ฟังก์ชัน tj_change_home_number ($ query) {ถ้า (is_home ()) {$ query-> set ('posts_per_page', 2); กลับ; }} add_action ('pre_get_posts', 'tj_change_home_number');
การทำเช่นนี้จะแก้ไขคิวรีหลักเพื่อส่งคืน 2 โพสต์ในหน้าแรกเท่านั้น
WP_Query
แบบสอบถามหลักในแม่แบบใด ๆ ที่เรียกว่าเป็นตัวอย่างของ WP_Query เมื่อคุณโต้ตอบกับตัวแปรโพสต์ทั่วโลกภายในเทมเพลตนั่นคือผลลัพธ์ของ WP_Query กรณีการใช้งานสำหรับสิ่งนี้มีมากมาย แต่เช่นเดียวกับ get_posts ฉันจะประกาศ WP_Query ใหม่เพื่อจุดประสงค์ในการดึงโพสต์ที่เกี่ยวข้อง เพียงจำไว้ว่าถ้าคุณเรียกใช้ ฟังก์ชัน the_post () ในขณะที่วนลูปผ่าน WP_Query ใหม่ ให้เรียกใช้ฟังก์ชัน wp_reset_postdata () หลังจากที่คุณวนลูปเสร็จแล้วเพื่อรีเซ็ตข้อมูลโพสต์ทั่วโลกเป็นเคียวรีหลักดั้งเดิม
get_posts
โดยการใช้ get_posts คุณจะได้รับผลเรียก WP_Query ใหม่และรับข้อมูลนั้นกลับมาในรูปแบบอาร์เรย์ โดยทั่วไปแล้วฉันจะใช้ get_posts เมื่อฉันส่งคืนโพสต์สำหรับแถบเลื่อนในหน้าแรกหรือเรียกโพสต์ที่เกี่ยวข้องในแถบด้านข้าง WP_Query สามารถใช้ได้อย่างง่ายดาย แต่เป็นวิธีที่ดีในการรับอาเรย์ของโพสต์โดยไม่ต้องแก้ไขตัวแปรโพสต์โกลบอล ในมุมมองของฉันมันง่ายที่สุดและใช้งานง่ายที่สุด ไม่มีการเรียกใช้ฟังก์ชันที่จำเป็นหลังจากส่งคืนข้อมูลของคุณเพียงแค่วนลูปผ่านอาร์เรย์
อาจทำให้สับสนเล็กน้อยดังนั้นอย่าลังเลที่จะถามคำถามในความคิดเห็นด้านล่าง
อ้างอิง:
WP_Query
pre_get_posts
query_posts
get_posts