[WordPress] サブループの2つの記述方法とその違い
前回の記事で、WordPressには「メインループ」と「サブループ」の2つのループが存在することに触れました。
今回はその内の、「サブループ」について詳しく見ていきます。
サブループの2つの記述方法とその違い
サブループを作成する方法には主に「get_posts()」と「WP_Query()」の2つがあります。
これらの違いを以下の表にまとめました。
関数 | ループ処理 | 取得できるデータ | 柔軟性 |
---|---|---|---|
get_posts | foreach を使用 | 投稿に関する情報のみ | 比較的シンプルなクエリ向け |
WP_Query | while を使用 | 投稿情報に加えて ページ情報も取得可能 |
複雑な条件や高度なクエリに対応可能 |
「WP_Query()」は取得できる情報が豊富で、より複雑な処理を実現できます。
一方、「get_posts()」はシンプルな処理に適しています。
用途に応じてこれらを使い分けると良いでしょう。
get_posts() を使用したサブループの記述例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$args = array( // 条件を指定 'post_type' => 'post', 'posts_per_page' => 5, ); $my_posts = get_posts( $args ); if ( ! empty( $my_posts ) ) : // 投稿があった場合 foreach ( $my_posts as $post ) : setup_postdata( $post ); ?> <!-- 投稿がある場合の処理内容 --> <?php endforeach; else : // 投稿がなかった場合 ?> <!-- 投稿がない場合の処理内容 --> <?php endif; wp_reset_postdata(); |
WP_Query()を使用したサブループの記述例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$args = array( // 条件を指定 'post_type' => 'post', 'posts_per_page' => 5, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) : // 投稿があった場合 while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <!-- 投稿がある場合の処理内容 --> <?php endwhile; else : // 投稿がなかった場合 ?> <!-- 投稿がない場合の処理内容 --> <?php endif; wp_reset_postdata(); |
サブループは、メインループとは異なる条件で投稿やページ情報を取得する際に利用します。
シンプルな処理には get_posts() を、より柔軟で複雑な処理には WP_Query() を選択するのがおすすめです。
用途や必要な情報量に応じて、最適な方法を選びましょう。