[WordPress]query_posts(‘nopaging=1’)で全ての記事を表示する

WordPressで記事を表示するときに以下のようにすると管理画面の「表示設定」で設定した「1ページに表示する最大投稿数」の数だけループされます。

<?php if (have_posts()) : ?>
<ul>

<?php while (have_posts()) : the_post(); ?>
<li><?php the_title(); ?></li>
<?php endwhile; ?>

</ul>
<?php endif; ?>

 

特定のテンプレートだけ全ての記事を表示しようと以下のように1000件の記事と恐らく投稿されない数を指定する考え方があるようです。

<?php if (have_posts()) : ?>
<ul>

<?php query_posts( 'showposts=1000' ); ?>    
<?php while (have_posts()) : the_post(); ?>
<li><?php the_title(); ?></li>
<?php endwhile; ?>

</ul>
<?php endif; ?>

 

しかし、そんな事をしなくても以下のように query_posts( ‘nopaging=1’ ) と指定すればOKです。

<?php if (have_posts()) : ?>
<ul>

<?php query_posts( 'nopaging=1' ); ?>
<?php while (have_posts()) : the_post(); ?>
<li><?php the_title(); ?></li>
<?php endwhile; ?>
<?php wp_reset_query(); ?>

</ul>
<?php endif; ?>

 

また、query_posts() を使ったら wp_reset_query() でリセットしておくのがベターです。

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン