将WP_QUERY限制为仅X个结果(总计,而不是每页)

时间:2017-12-19 作者:Runnick

如何将WP\\u查询限制为仅获取5个结果?我的意思是,实际上每页只有5条结果,而不是5条帖子。

How to limit the number of posts that WP_Query gets?

提供一些可供使用的见解和建议no_found_rows=true 但您是将其用于每页的posts\\u,还是需要将结果限制在其他地方?

在我的情况下(搜索)get_posts 不起作用,因为我需要提供搜索查询。

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

如前所述,要限制查询检索到的帖子数量,可以使用posts_per_page.

此参数适用于get_postsWP_Query(), 例如:

$args = array(
    \'posts_per_page\' => 5,

);
$posts_array = get_posts( $args );
正如您提供的链接所述,no_found_rows = true 将在查询达到其条件后结束查询。这是完全可选的,不是很常见。

SO网友:Antonio

您要查找的不是WP\\u Query的参数,而是过滤器post_limits.

此筛选器在查询发送到数据库之前应用于查询的LIMIT子句,允许您定义新的查询限制。

您可以在此处找到更多详细信息:https://codex.wordpress.org/Plugin_API/Filter_Reference/post_limits

根据具体情况,您有两种解决方法:

在函数中使用条件,如codex中的示例LIMIT 0, 5. 因此,在查询之前添加过滤器,然后将其删除UPDATE: 为第二个解决方案添加了完整的示例。

在函数中声明函数。php

function custom_get_posts_limit(){
    return \'LIMIT 0, 5\';
}
然后在你想去的任何地方使用它

add_filter( \'post_limits\', \'custom_get_posts_limit\' );

// Add all your others args
get_posts( array( \'suppress_filters\' => false) );

remove_filter( \'post_limits\', \'custom_get_posts_limit\' );

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post