2015-11-03 17 views
0

'posts_per_page'不限制WP_Query將獲取的項目數量。 哪個是好的,但是我需要找到一種方式,在獲取3個項目後如何打破WP_Query的某些限制或打破屬性。我有很多項目,並獲取3個項目,它獲得了我的數據庫中的所有1000多個項目,這最終放慢了頁面的速度。如何通過WP_Query限制獲取項目的數量

任何想法如何限制查詢得到只有3而不是從數據庫中的所有項目?

$args = array(
    'post_type' => array('books'), 
    'meta_query' => array(
     array(
      'key' => 'book_state', 
      'value' => 'sold' 
     ) 
    ), 
    'posts_per_page' => 3, 
); 
$the_query = new WP_Query($args); 

if ($the_query->have_posts()) : 

    $booksNumber = $the_query->found_posts; // returns 1282 instead of 3 

    ... 
+1

不看WordPress的來源,我很確保你沒有獲取所有帖子,只是總數,這樣你就可以用它來分頁或顯示總數。 – jeroen

回答

2

found_posts返回匹配查詢參數的職位總數。

post_count返回顯示的帖子總數。我相信想要做的是:

$booksNumber = $the_query->post_count; 

如果不行,我會嘗試使用get_posts代替WP_Query

$postslist = get_posts($args); 
$booksNumber = count($postslist); 
+1

不知道爲什麼這是被拒絕.... – David

+0

不錯。 'post_count'就是我一直在尋找的東西。謝謝。 –

-1

它看起來像你只使用一元的查詢,所以儘量使用get_posts

通常,我會推薦WP_Query,但是我可以看到它會如何混淆。如果您運行下面的代碼,你會看到更多的東西像你期待什麼:

$args = array(
    'post_type' => 'books', 
    'meta_key' => 'book_state', 
    'meta_value' => 'sold', 
    'posts_per_page' => 3, 
); 
$posts = get_posts($args); 
echo count($posts); 
var_dump($posts); 
相關問題