【WordPress】メインループとサブループ
WordPressでサイトを構築する上で理解しておきたい、
メインループとサブループについてまとめました。
ループとは
WordPressのループとは、管理画面で書いた記事(投稿や固定ページ)を取得して、
サイトに表示するために使う処理のことです。
WordPressで構築したサイトの記事一覧、記事詳細ページ、固定ページ…
あらゆるページで「ループ」が使われています。
WordPressのループには、「メインループ」と「サブループ」の2種類があり、
状況に応じて使い分ける必要があります。
メインループとは
条件を指定せずに、テンプレートファイル(〇〇.php)に応じた情報を取得し表示することができます。
全記事の一覧ページを表示させる場合(archive.php、category.phpなど)や
記事ページを表示させる場合(single.php、page.phpなど)に主に使用します。
1ページ(1テンプレートファイル)につき1回まで利用できます。
メインループの記述例
1 2 3 4 5 6 7 |
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <!-- 投稿がある場合の処理内容(投稿日付や記事タイトルを取得する記述 等) --> <?php endwhile; ?> <?php else: ?> <!-- 投稿がない場合の処理内容 --> <?php endif; ?> |
ループする内容は呼び出されるテンプレートごとに異なります。
archive.php、category.phpに全く同じメインループを記述した場合、
archive.phpでは全記事の一覧、category.phpではカテゴリー別の記事一覧が呼び出されます。
また、表示件数などの細かい指定をループ内に記述することは出来ないため、
functions.php内や管理画面で指定する必要があります。
メインループの表示件数は、functions.php内に特に指定しない場合、管理画面の「表示設定」に依存します。
サブループとは
以下のような場面ではサブループを使用します。
・条件付きで記事を取得したい場合に
特定のカテゴリーを、特定の投稿タイプを、○件だけ表示、のように
条件に応じた情報を取得し表示することができます。
・同じテンプレートファイル内でループを複数使いたい場合に
サブループは1ページ(1テンプレートファイル)に何度でも使用できるので、以下のようなことが可能です。
例:archive.php 内に、全記事を取得する記事一覧をメインループで取得。
「人気記事一覧」や「最近更新された記事一覧」等をサブループで取得 等
サブループの記述例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $args = array( 'category_name' => 'pickup', //カテゴリースラッグを指定 'posts_per_page' => 5 //5件表示 ); $the_query = new WP_Query($args); ?> <?php if ( $the_query->have_posts() ) : ?> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <!-- 投稿がある場合の処理内容(投稿日付や記事タイトルを取得する記述 等) --> <?php endwhile; else: ?> <!-- 投稿がない場合の処理内容 --> <?php endif; wp_reset_postdata();?> |
上の例では、「カテゴリーがpickupの記事を5件表示」という条件で情報を取得しています。
サブループには、2通りの記述方法がありますが、
別記事で紹介します。