2015-11-03 121 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);