この記事は最後に更新してから1年以上経過しています。

全投稿を取得するのはnopaging=1でいい

説明

query_posts関数(またはWP_Queryクラス)を使う場合、取得する件数の指定を省略すると管理者ページの「表示設定」-「1ページに表示する最大件数」の指定値分だけの投稿情報を取得する。それでは条件にマッチするすべての投稿情報を取得するには?
query_posts関数において取得する件数を指定するパラメータはposts_per_pageがある(showpostsでもいい)。これはその名の通り1ページ分の投稿件数を指定するもので、例えば20件分を取得する場合は
query_posts( $query_string.'&posts_per_page=20' );
と記述すればいい(グローバル変数$query_stringの条件のまま、最大20件分の投稿情報を取得する)。
さて、ニュースのようなアーカイブページの場合、四半期分や一年分といった一定期間の投稿情報をすべて取得して表示したいケースがある。posts_per_pageの値として適当に大きな数値を指定してもいいのだが、全件を取得することを明示的に指定するなら
query_posts( $query_string.'&year=2011&nopaging=1' );
と記述すればいい。これで「1ページに表示する最大件数」の指定に関わらず、2011年の投稿情報がすべて取得できる。
またposts_per_pageの値に-1を指定しても同様の結果となる。
query_posts( $query_string.'&year=2011&posts_per_page=-1' );
これはquery_posts関数の内部では「posts_per_page=-1」の場合、「nopaging=1」と同じ意味に解釈されるためである。
query_posts関数のパラメータは実に種類が多い。その中には名前は違っても同じ(ような)意味のパラメータもいくつか存在しており、ちょっと紛らわしい。作ったテーマやプラグインは作者以外も見ることを考えると、できるだけ明示的でわかりやすい(と思う)記述に心がけたい。

最終更新 : 2011年08月31日 14:55


お勧め

home_url(2023年3月31日 更新)

string home_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のホームURLを取得する。ホームURLは、管理者ページの「設定」-「一般」の「サイトのアドレス(URL)」のこと。

get_comment_meta(2014年3月9日 更新)

mixed get_comment_meta( int $comment_id [ , string $key = '' [ , bool $single = false ] ] )
コメントメタ情報の値を取得する。

wp_maybe_inline_styles(2025年12月4日 更新)

void wp_maybe_inline_styles()
CSSファイルの追加情報をインライン化する。

next_posts_link(2018年5月27日 更新)

void next_posts_link( [ string $label = 'Next Page »' [ , int $max_page = 0 ] ] )
カテゴリーやタグなどのアーカイブページにおいて、1ページの投稿件数以上の投稿があった場合に次ページへのリンクを表示する。

wp_lazy_loading_enabled(2023年8月11日 更新)

bool wp_lazy_loading_enabled( string $tag_name, string $context )
要素にloading属性を追加するか判定する。