如何通过多个帖子ID获取帖子?


21

我有一个帖子ID为:的字符串43,23,65
我希望可以使用get_posts()带有ID的字符串作为参数。

但是我找不到任何通过ID检索多个帖子的功能。

我真的必须做一个WP_query吗?

我也看到有人提到使用tag_in-但我找不到与此有关的任何文档。


您是否尝试过使用get_posts() codex.wordpress.org/Template_Tags/get_posts的'include'参数?
迈克尔

Answers:


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_typeposts_per_page只是为了很好的措施。


这行不通。
2015年

没有?您是否将其作为数组传递?使用两个下划线(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
Fusion

3

如果您无法执行上述操作,请确保添加post_type

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

$posts = get_posts($args);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.