为什么get_posts()只返回5个匹配的帖子,它应该返回9?

时间:2010-01-25 18:14:53

标签: wordpress

global $post; 
$cat1=get_cat_ID('test1'); 
$cat2=get_cat_ID('test2'); 
$myrecentposts = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat1,-$cat2",'showposts' => 5));
$myrecentposts2 = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat1,-$cat2"));
$myrecentpostscount = count($myrecentposts2);
echo $myrecentpostscount;

回声的值为5(正确的值应为9)。我可以让它返回正确的后计数值的唯一方法是更改​​$ myrecentposts2计算,如下所示......

$myrecentposts2 = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat1,-$cat2",'showposts' => 999));

3 个答案:

答案 0 :(得分:17)

Wordpress codex表示get_posts的默认posts_per_page值为5

要删除此限制,请使用posts_per_page = -1

要删除此限制,您可以使用nopaging = true

答案 1 :(得分:7)

查看get_posts() documentation on Codex,您可以看到要显示的帖子数量的参数:

参数为:'posts_per_page'
用法:'posts_per_page'=> -1 // for removing the limit。这将获取所有帖子。

更新:'nopaging' => true是推出更新版本的方式

答案 2 :(得分:0)

此外,自WP 2.9(或甚至2.8)以来,不再使用showposts,只要您试图控制返回的帖子数量,就会使用posts_per_page。