如何从分页搜索结果中获取所有帖子数据?

时间:2012-05-31 作者:mike23

比如说,我正在我的网站上进行搜索,结果得到了50篇帖子。分页设置为每页10篇文章,因此我有5页的结果。

当我在结果的第一页时,如果我检查全局var$posts, 它只为我提供了当前结果页的10篇文章的数据。

无论我在哪一页上,如何访问所有结果的数据?

1 个回复
最合适的回答,由SO网友:icc97 整理而成

整个循环机制基于一个过滤的$posts数组。所以,看看里面The Loop documentation on multiple loops 它为您使用的标准循环代码提供了PHP解释:

 <?php if (have_posts()) : ?>
           <?php while (have_posts()) : the_post(); ?>    
           <!-- do stuff ... -->
           <?php endwhile; ?>
 <?php endif; ?>
have\\u posts()和\\u post()是全局$wp\\u查询对象的方便包装,所有操作都在该对象中。$wp\\u查询在blog标头中调用,并通过GET和PATH\\u INFO传入fed查询参数。$wp\\u查询接受参数并构建和执行一个DB查询,该查询将生成一个POST数组。此数组存储在对象中,并返回到日志标题所在的位置stuffed into the global $posts array (for backward compatibility with old post loops).

have\\u posts()只需调用$wp\\u query->have\\u posts(),它会检查循环计数器以查看post数组中是否还有帖子。\\u post()调用$wp\\u query->the\\u post(),这将推进循环计数器并设置全局$post变量以及所有全局post数据。完成循环后,have\\u posts()将返回false,我们就完成了。

因此,全局$posts连接到have\\u posts函数。为了正常工作,它只能包含分页的帖子列表。还要注意$posts数组只是为了向后兼容,所以最好不要直接访问它。

因此,看起来您要么设置自己的分页,要么创建一个包含所有帖子的单独对象。

我建议采用后者。

结束

相关推荐

Orderby不适用于使用ID数组的QUERY_POST

我有一个ID数组,我发送给query\\u posts以获取帖子(这很好),但它似乎总是把附件(562)放在最后,即使它是最新的。还尝试了title和ASC vs DESC,但它总是最后一个?$slide_args = array( \'post_type\' => \'attachment\', \'post_status\' => \'inherit\', \'fields\' => \'ids\',