
前回の記事でワードプレスの繰り返しの基本、繰り返しに使用する記事の総数をquery_posts()を使って限定する方法をお伝えしましたが、今回は「wp_reset_query()」を使って取得したデータを一旦リセットする方法をお伝えします。
例えばこのWEBCreate PRACTICE!!の様にTOPページ以外にもお知らせが出ている様なサイトでは非常に助かる関数となります。具体的にはquery_posts()を使って記事のタイトルを何件か繰り返した後に一件の記事の全文を表示させたい時に使って頂くとかなり便利というやつです。
WEBCreate PRACTICE!!を例にとってソースを観て行きます。
News-feed部分の繰り返しの記述
<ul id="news" class="ticker"> <?php if (query_posts('showposts=4')) : ?> <?php while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_date(); ?><?php the_title(); ?></a></li> <?php endwhile; ?> <?php endif; ?> </ul>
ここまでは前回の復習みたいな感じですが、「WEBCreate PRACTICE!!」の場合このままでは問題が発生します。「WEBCreate PRACTICE!!」はTOPページにも単一の投稿にもこのソースを使用しています。なにが起きるかというと単一の記事を表示すると、4件分の記事をすべて表示してしまうんですね。ここで登場するのが「wp_reset_query()」です。
wp_reset_query()を使ってquery_posts()を初期化する
使い方は非常に簡単です。query_posts()をリセットしたい場所にこの記述をするだけです。
<ul id="news"> <?php if (query_posts('showposts=4')) : ?> <?php while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_date(); ?><?php the_title(); ?></a></li> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_query(); ?> </ul>
これでこのあと記事の本文を表示してもquery_posts()の内容は影響しません。