WordPressで複数のループを使う

電脳備忘録

エントリーを表示するのに複数ループ処理を行う必要が出てきたのですが、調べてみるとquerypostってのは1回しか使えなくて、ページ内で複数ループを回すときはサブループというのを使うらしいですね。

重要事項
query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。メインループの他で query_posts() を使用すると、メインループが不正な状態になり期待する結果が得られません。

WordPress Codexテンプレートタグ/query posts

さらに調べて、結局下記のエントリーを参考にして対応しました。

サブループの追加には「get_posts()」「WP_Query()」を使おう
前置きが長すぎた感がありますが、新たなループを追加するには「get_posts()」、または「WP_Query()」を使います。現状(WordPress3.3)どちらもできることは同じらしいので、どちらか片方を覚えればいいと思います。
これらを使って追加されたループのことをサブループといいます。
ちなみにループファイル内で2つのループを使うことをマルチループといいます。

WordPressで複数のループを使ってカスタム投稿一覧を自在に表示する方法

なるほど、こんな感じで書けばいいのですね

<dl>
<?php
$args = array(/* 配列に複数の引数を追加 */
'posts_per_page' => 3, /* 表示するページ数 */
); ?>
<?php $loop = new WP_Query( $args ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php endwhile; ?> <?php wp_reset_postdata(); ?> </dl>

次いつ触るかわからないので、些細なことでも備忘録に書き遺しておかないとね。そのための備忘録だし...。

広告

ブログの維持費に充てるでございます・・・。