ฉันจะได้รับโพสต์ด้วย ID โพสต์หลายรายการได้อย่างไร


21

ฉันมีสตริงกับโพสต์ ID 43,23,65ของ:
ฉันหวังว่าฉันจะสามารถใช้get_posts()และใช้สตริงที่มี ID เป็นอาร์กิวเมนต์

แต่ฉันไม่พบฟังก์ชั่นใด ๆ ในการดึงข้อมูลการโพสต์หลายรายการด้วย ID

ฉันต้องทำจริงๆWP_queryเหรอ?

ฉันเคยเห็นบางคนพูดถึงการใช้tag_in- แต่ฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับเรื่องนี้


คุณพยายามใช้อาร์กิวเมนต์ 'รวมถึง' ของget_posts() codex.wordpress.org/Template_Tags/get_postsหรือไม่
Michael

คำตอบ:


37

คุณสามารถใช้ก็จะขัดแย้งกันเป็นget_posts()WP_Query

หากต้องการส่ง ID ให้ใช้'post__in' => array(43,23,65)(ใช้เวลาอาร์เรย์เท่านั้น)

สิ่งที่ต้องการ:

$args = array(
    'post__in' => array(43,23,65)
);

$posts = get_posts($args);

foreach ($posts as $p) :
    //post!
endforeach;

ฉันยังตั้งpost_typeและposts_per_pageเพียงเพื่อวัดที่ดี


มันใช้งานไม่ได้
Rage แตกต่างระหว่าง

ไม่มี? คุณผ่านมันเป็นอาร์เรย์หรือไม่? ใช้เครื่องหมายขีดล่างสองอัน (post__in กับ post_in) หรือไม่ ผ่าน post_type หรือไม่
CookiesForDevo

1
หากคุณได้รับประเภทโพสต์ที่กำหนดเองใช้post_typeอาร์กิวเมนต์และถ้าคุณต้องการผลลัพธ์มากกว่า 5 รายการให้เพิ่ม'nopaging' => trueตัวเลือก หากคุณมีสตริงคั่นด้วยเครื่องหมายจุลภาคแทนที่จะเป็นอาร์เรย์ให้ใช้explode(',',$input);เพื่อแปลงเป็นอาร์เรย์
ejazz

1
หากคุณต้องการที่จะเก็บคำสั่งของการโพสต์ในแบบที่พวกเขากำลังส่งผ่านโดยarrayให้แน่ใจว่าจะเพิ่มที่คุณ'order_by' => 'post__in' $args
rob_st

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

3

หากคุณไม่สามารถทำงานข้างต้นได้โปรดเพิ่มpost_type:

$args = array(
    'post_type' => 'pt_case_study',
    'post__in' => array(2417, 2112, 784)
);

$posts = get_posts($args);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.