query_postsでループの条件を指定しよう!

query_postsを使ってループの条件を指定するトップページやカテゴリーのページで
通常のループを使って投稿記事を呼び出す時、
「古い順に表示させたいなー」とか
「特定のカテゴリーのみで表示させたいなー」
なんていうときが特に企業サイトの場合は多々あります。
そういう時に便利なのが「query_posts」タグ。

今回はこのquery_postsを使って、
投稿記事をあんなこといいな、できたらいいな♪しちゃおう!
というテーマでお送りします。

「query_posts」ってなんなの。

query_postsとは通常のループによる表示方法を指定できるものです。
基本形は以下の通りです。

[xml]
<?php query_posts( 引数 ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
[/xml]

このquery_postsはループをあらわしているわけではないので、これだけあってもエラーになります。
「引数」の部分に色々なパラメーターをつけていくわけです。

実際に使ってみる

では実際に色んな場合でパラメーターを入れていってみましょう。

ケース1.特定のカテゴリーのみ表示させたい。
[xml]
<?php query_posts( category_name=スラッグ ); ?>
[/xml]

カテゴリーのスラッグを入れると、そのカテゴリーのみの表示になります。
例えば、あるカテゴリーに関するページ内に記事を表示させたい場合などに使えそうですね。
※「cat=カテゴリーナンバー」でもOK

ケース2.表示する記事の数を変更する。
[xml]
<?php query_posts( showposts=3 ); ?>
[/xml]

showposts=のあとに、表示させたい記事の数を入れます。
例の場合では記事が3つ表示されます。

ケース3.古い順から並べたい。
[xml]
<?php query_posts( order=asc ); ?>
[/xml]

最新の記事ほど上のほうに表示されますが、
記事を古い順から表示させたい場合は order=asc を使用します。

パラメーターを複数組み合わせるには

ごく一部ですがパラメーターを紹介してみましたが、
実際1つだけ設定したいということってあんまりないと思うんです。

「特定のカテゴリーの記事を5件表示したい」とか
「古い順から3件表示したい」とか、たいていの場合は合わせ技になります。

そういう場合は各パラメーターを「&」でつないであげます。

例えば、カテゴリーがcategory1の記事を5件表示させたい場合は
以下のようになります。

[xml]
<?php query_posts( category_name=category1&showposts=3 ); ?>
[/xml]
ページ送りがうまくできない時はどーするの?

ただし、条件に該当する記事が大量にある場合、
次のページを表示させようとしても、うまく表示できないことがあります。
その場合は「$query_string」を引数の先頭におき、続く引数を「&」から始めるようにします。

[xml]
<?php query_posts($query_string . "&cat=2"); ?>
[/xml]

使う頻度の高いquery_posts。
自分のお好みに合わせて便利に使ってみてください(。^-^。)ノ