web-dev-qa-db-ja.com

単一のループに表示するデフォルトの投稿数を上書きしますか?

(WordPress管理者の閲覧設定で定義されているように)1ページに表示するようにブログ投稿のセット数を上書きすることは可能ですか?私が使っているカスタムループが無限の数を表示するようにしたいのです。

3
user1462

クエリに表示される投稿数を制御する引数はposts_per_pageです。

<?php query_posts( array( 
                         'post_type' => 'post',
                         'posts_per_page' => -1 ) 
      ); 
?>

また、3.0ブランチには-1の整数ですべての投稿が表示されないというバグがあります。これは3.1で修正されましたが、回避策は-1の代わりに非常に高い数を使用することです。

見る:

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

8
Chris_O

確かに、追加してクエリを変更します。

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

1
eileencodes

Eileenは正しいですが、引数を配列として使うほうが良いです<?php query_posts( array( 'post_type' => 'post', 'numberposts' => -1 ) ); ?>

1
Ashfame

私は同じ問題を抱えていました..私はカスタム変数を追加し、pre_get_posts query_varを設定するためにpost_per_pageの間にその変数をキャッチすることにしました。

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');
    }
}

それから私はさらに進んで、カスタムクエリvarに表示したい正確な量を取得します。

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);
    }
}

私のために働きました。

0
Ted