是否覆盖要为单个循环显示的默认帖子数?

时间:2011-02-07 作者:user1462

是否可以覆盖每页显示的博客帖子集(如WordPress admin中的阅读设置所定义)?我想让它这样一个自定义循环,我使用将显示一个无限的数字。

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

控制查询中显示多少帖子的参数是posts\\u per\\u page

<?php query_posts( array( 
                         \'post_type\' => \'post\',
                         \'posts_per_page\' => -1 ) 
      ); 
?>
还要注意的是,3.0分支中有一个bug,它阻止了-1整数显示所有帖子。它在3.1中是固定的,但解决方法是使用非常高的数字,而不是-1

请参见:

http://core.trac.wordpress.org/ticket/15150

SO网友:eileencodes

当然,通过添加

<?php query_posts(\'post_type=post&numberposts=-1\'); ?>

SO网友:Ashfame

Eileen是对的,但最好将参数用作数组<?php query_posts( array( \'post_type\' => \'post\', \'numberposts\' => -1 ) ); ?>

SO网友:Ted

我也有同样的问题。。我决定添加一个自定义变量,然后在pre_get_posts 设置post_per_page query\\u变量:

function custom_query_vars_filter($vars) {
  $vars[] = \'post_per_page_override\';
  return $vars;
}
add_filter( \'query_vars\', \'custom_query_vars_filter\' );


add_action( \'pre_get_posts\', \'rc_modify_query_get_design_projects\' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars[\'post_per_page_override\'] == \'3\') {
        $query->set(\'posts_per_page\', \'3\');
    }
}
然后我更进一步,让它得到您想要在自定义查询变量中显示的确切金额:

function custom_query_vars_filter($vars) {
  $vars[] = \'post_per_page_override\';
  return $vars;
}
add_filter( \'query_vars\', \'custom_query_vars_filter\' );


add_action( \'pre_get_posts\', \'rc_modify_query_get_design_projects\' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars[\'post_per_page_override\']) {
        $customPPPlimit = $query->query_vars[\'post_per_page_override\'];
        $query->set(\'posts_per_page\', $customPPPlimit);
    }
}
为我工作。。

SO网友:Tom J Nowell

如果使用自定义循环,只需指定posts_per_page, e、 g.:


$query = new \\WP_Query( [ \'posts_per_page\' => 100 ] );
if ( $query->have_posts() ) {
    ......etc
你可以设定posts_per_page-1 但这是一种非常糟糕的做法。相反,设置你认为你的服务器可以提供多少帖子而不会摔倒,这样如果创建了太多帖子,你的站点就不会宕机,200是一个很好的上限。

否则,请使用pre_get_posts 用于修改传递给查询的参数的筛选器:

add_action( \'pre_get_posts\', function ( $query ) {
    if ( is_admin() ) {
        return;
    }
    $query->set( \'posts_per_page\', 100 );
}
注意,这将把所有查询设置为100页,包括提要、RESTAPI、XMLRPC等

此外,有些人会推荐query_posts, 但这是一种不好的做法,会导致许多其他问题

结束

相关推荐

键的值或键的存在的Query_Posts()

我最近开始在一个项目中使用简单字段来区分不同类型的帖子。从现在起,所有帖子都会有四个可能的元值(故事、文章、视频或卡通)中的一个。这些类型的帖子都没有唯一的属性或值,所以我决定这次不使用自定义帖子类型。我知道如何查询具有特定元值的帖子,但这只适用于已经具有与之关联的元键的帖子,而不适用于在安装简单字段插件并投入使用之前创建的帖子。我很好奇如何查询所有没有元键“fizzbuzz”或有键但与“foobar”值关联的帖子。有没有办法查询所有没有密钥的帖子?