Bagaimana cara saya mendapatkan posting dengan beberapa ID posting?

21

Aku punya string dengan ID posting ini: 43,23,65.
Saya berharap saya bisa menggunakan get_posts()dan menggunakan string dengan ID sebagai argumen.

Tetapi saya tidak dapat menemukan fungsi untuk mengambil beberapa posting dengan ID.

Apakah saya benar-benar harus melakukan WP_query?

Saya juga melihat seseorang menyebutkan menggunakan tag_in- tetapi saya tidak dapat menemukan dokumentasi tentang ini.

Steven
sumber
get_posts() Sudahkah Anda mencoba menggunakan argumen 'include' dari codex.wordpress.org/Template_Tags/get_posts ?
Michael

Jawaban:

37

Anda dapat menggunakan get_posts()argumen yang sama dengan WP_Query.

Untuk memberikan ID, gunakan 'post__in' => array(43,23,65)(hanya perlu array).

Sesuatu seperti:

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

$posts = get_posts($args);

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

Saya juga mengatur post_typedan posts_per_pagehanya untuk ukuran yang baik.

CookiesForDevo
sumber
Ini tidak bekerja
Dissident Rage
Tidak? Apakah Anda meneruskannya sebagai array? Menggunakan dua garis bawah (post__in vs post_in)? Melewati post_type?
CookiesForDevo
1
Jika Anda mendapatkan jenis posting khusus, gunakan post_typeargumen, dan jika Anda menginginkan lebih dari 5 hasil, tambahkan 'nopaging' => trueopsi. Jika Anda memiliki string yang dipisah koma, bukan array, gunakan explode(',',$input);untuk mengonversi ke array.
ejazz
1
Jika Anda ingin menjaga urutan posting seperti yang dilaluinya array, pastikan untuk menambahkan 'order_by' => 'post__in'ke posting Anda $args.
rob_st
berhati-hatilah menggunakan post_typeparameter. Jika demikian post, fungsi akan mengembalikan SEMUA jenis konten, termasuk yang khusus Anda, bukan hanya post.
Fusion
3

Jika Anda tidak bisa mendapatkan yang di atas berfungsi, pastikan Anda menambahkan post_type:

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

$posts = get_posts($args);
virtualLast
sumber