WordPressで押さえておきたい「メインループ」と「サブループ」

WordPressでサイトを構築する際に欠かせない「メインループ」と「サブループ」について解説します。
ループとは
WordPressのループは、管理画面で作成した投稿や固定ページを取得し、サイトに表示するための処理です。
記事一覧ページや詳細ページ、固定ページなど、WordPressで生成されるほぼすべてのページでこの「ループ」が使用されています。
WordPressのループには以下の2種類があります。
・メインループ:テンプレートファイルに応じたデータを自動取得・表示。
・サブループ:条件を指定してデータを取得・表示。
用途に応じて適切に使い分ける必要があります。
メインループとは
メインループは、テンプレートファイル(例:archive.php、single.phpなど)の種類に応じて、自動的にデータを取得し表示する処理です。
 
主に以下の場合に使用します。
・記事一覧ページ(archive.php、category.phpなど)
・記事詳細ページ(single.php、page.phpなど)
ポイント
・1ページ(1テンプレートファイル)につき1回まで利用可能。
・表示件数などの詳細設定は、functions.phpや管理画面の設定で指定する必要あり。
メインループの記述例
| 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:特定カテゴリーの記事一覧を表示。
また、メインループの表示件数は特に指定がなければ管理画面の「表示設定」に依存します。
細かな調整が必要な場合はfunctions.phpで制御する必要があります。
サブループとは
サブループは、条件を指定して特定のデータを取得・表示したい場合に使用します。
また、同じテンプレートファイル内で複数のループを使用する場合にも便利です。
サブループを使うケース
1.条件付きでデータを取得する場合
 例:特定のカテゴリーや投稿タイプの記事を○件だけ表示。
2.複数のループを利用する場合
 例:archive.phpで全記事一覧をメインループで取得し、人気記事や最近更新された記事をサブループで取得。
サブループの記述例
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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; ?> <?php else: ?>   <!-- 投稿がない場合の処理内容 --> <?php endif; wp_reset_postdata(); ?> | 
上記の例では、「カテゴリーがpickupの記事を5件表示」という条件でデータを取得しています。
サブループの補足
サブループには複数の記述方法があります。
詳細な方法については、別記事で解説します。
![MARKLEAPS[マークリープス]](https://markleaps.com/blog/wp-content/themes/mkl/images/00_logo.png)
 
                        
![[WordPress] プラグイン「WP ALL Import」で既存記事を一括更新(CSV上書き)する方法](https://markleaps.com/blog/wp-content/uploads/2025/10/wp-all-import_update-500x254.jpg)
![[WordPress] CSVで記事を一括インポート-プラグイン「WP ALL Import」の使い方](https://markleaps.com/blog/wp-content/uploads/2025/10/wp-all-import-500x254.jpg)
![[WordPress] 記事への画像挿入方法](https://markleaps.com/blog/wp-content/uploads/2025/10/pic_manual_mainimg-500x254.png)
![[WordPress] カテゴリーとタグの違いと設定方法](https://markleaps.com/blog/wp-content/uploads/2025/10/wp-category-tag-500x254.jpg)