未経験からwebデザイナーになった私が、ステップアップするためのTIPSを紹介
webデザイン

【自作WordPress】メインループとサブループとは?

ループ処理について

ループ処理とは何か

HTMLとCSSを使って作成した静的なサイトをワードプレス化するときに、ほぼ必須で使用するもの=「ループ処理」です。

ループ処理は、トップページでの新着情報の一覧や、各種アーカイブページ(記事の一覧ページ)サイドバーの閲覧数ランキングなどに使われます。

ワードプレスに使用するループ処理には、主に2種類あり、メインループとサブループに分かれます。今回はこの2つの違いについて自分なりに分かりやすく解説します。

メインループとは

まずは、メインループについて。コードは以下のようになります。

メインループのコード

各コードの意味はこのような感じです。

if (have_posts()) :→投稿記事があったら
while (have_posts()):→記事がある間はこの処理を繰り返す
the_post()→次の記事を取得する
→投稿記事のURLを取得、出力する
→投稿記事のタイトルを取得する

index.phparchive.phpに上記のメインループを記述した場合、通常の「投稿」より対象の記事のURLを取得、出力します。
※カスタム投稿タイプなど使用する場合は、次のサブループについての解説を使います。

ワードプレスは、リクエストされたURLによって取得するデータを判別し、その後にテンプレートを表示する仕組みとなっており、この「事前にデータ取得しなさいよ」と命令することをメインクエリと呼びます

すなわち、メインクエリで取得したデータを繰り返し表示すること=メインループということになります。

先ほども書きましたが、例えば「index.phpにカスタム投稿タイプで作成した記事のデータを取得、表示したい」場合は、次に紹介するサブループを使い必要があります。

サブループとは

メインループに対して、サブループというものが存在します。
メインループにメインクエリ、という概念があるように、サブループにもサブクエリという概念が存在します。

「メインクエリ以外のデータを取得したい」

こんな時はサブクエリを使って、自分で取得するデータを指定する必要があります。

サブループを使用した場合のコードは下記のような例です。

サブループのコード

‘post_type’ => ‘Products’,でどういう投稿タイプなのかを指定し(この場合は「Product」というカスタム投稿タイプ)
‘post_status’ => ‘publish’,で公開済みの投稿だけを表示するように設定
posts_per_page’ => 5で、表示する投稿の数を指定します。(この場合は5個まで、全件表示の場合は-1にする)

ちなみに、上記のコードサンプルに書かれたテンプレートタグの意味を紹介します。

→こちらはメインループで説明した通り。
→公開した日時を取得、出力します。
→投稿タイプに対応したURLを取得、出力
→指定した投稿のタイトルを取得、出力
→指定した投稿の本文を取得、出力

は、CSSと組み合わせることで、「3行だけ表示して末尾に…を表示する」といったことが可能になります。

サブループを記述するときは<?php wp_reset_postdata(); ?>という、ループをリセットするための記述が必ず必要になります。

このほかにも、自分で記述することでカテゴリを指定したり、記事の並び順を指定したり、様々なカスタマイズが可能になります。

2つの違いを理解して、思い通りのWordPressを作る

正直それぞれの意味をちゃんと理解しなくても、ある程度のものを作ることはできます。ですが、それぞれのタグの意味をきちんと理解することで、作業効率もアップしますし、応用も効くのでより高度なものの作成ができます。ループ処理は確実に使用するものですので、この機会にぜひ覚えてみましょう!