2010-01-25 43 views
9
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計算如下...爲什麼get_posts()只返回5個匹配的帖子,當它返回9?

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

回答

16

WordPress的抄本說:get_posts5默認posts_per_page值。

要刪除此限制,請使用posts_per_page = -1

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

+0

甜蜜的樣子!你怎麼知道的? – 2010-01-25 20:39:46

+0

它在wordpress codex http://codex.wordpress.org/Template_Tags/get_posts btw我的壞 - 它的posts_per_page而不是限制:) – roman 2010-01-26 07:43:04

0

另外,showposts在WP 2.9(或者甚至2.8)時已棄用,無論何時試圖控制返回的帖子數量,請使用posts_per_page。

+0

我不知道。謝謝Gipetto! posts_per_page引入了什麼版本?換句話說,我不想從showposts改變,如果它可能會拋出近期wordpress發佈的錯誤... – 2010-01-26 17:47:40

+0

Gipetto,當我從'showposts'=> -1改爲'posts_per_page'=> -1時比顯示所有帖子,我只得到5.我現在切換回showposts。 – 2010-01-26 18:00:46

7

看那get_posts() documentation on Codex,你可以看到有要顯示的職位數的參數:

的參數是:'posts_per_page'
用法:'posts_per_page'=> -1 // for removing the limit。這將獲取所有帖子。

更新:'nopaging' => true IST去與新版本

+0

'nopaging'=> true爲我做了詭計。謝謝! – Martin 2013-12-09 14:10:29