如何使用WP_QUERY()设置每页帖子

时间:2011-09-26 作者:supertrue

我正在尝试使用自己的变量动态设置每页的posts\\u数量。这段代码运行良好:

query_posts( $query_string  . "&posts_per_page=" . $myvar )
// then display the loop using get_template_part( \'loop\' );
这很好,但我想知道如何使用$wp\\u query而不是query\\u posts来完成。但是,这不起作用:

$wp_query->set(\'posts_per_page\', $myvar)
// then display the loop using get_template_part( \'loop\' );
这对显示的帖子数量没有影响。我是否错误地使用了set方法,或者我是否缺少了什么?

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

query_posts 将再次执行查询(销毁当前wp\\U查询并创建一个新查询,然后使用传递给它的参数执行查询)

使用设置新参数后获得相同的行为set_var 您需要使用类似这样的方法再次查询数据库

 $wp_query->set(\'posts_per_page\', 1);
 $wp_query->query($wp_query->query_vars);

SO网友:Milo

当你打电话的时候query_posts 如果模板中有一个修改过的查询,那么实际上您正在运行另一个查询并丢弃原始查询。尝试在模板中设置查询变量无效,因为原始查询已经发生。使用$wp_query->set() 在查询数据库之前,必须先挂接,例如pre_get_posts.

SO网友:Chip Bennett

为什么需要使用$wp_query->set() 完全

你不能只使用:

<?php
$my_custom_query_args = array(
    \'posts_per_page\' => $myvar
);
$my_custom_query = new WP_Query( $my_custom_query_args );
?>

SO网友:Anton

You may use

$wp_query->query_vars[\'posts_per_page\'] = 25
结束

相关推荐

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

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