Anonim

รายละเอียดด่วน

  • 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

Wp_query เทียบกับ query_posts เทียบกับ get_posts เทียบกับ pre_get_posts