WordPress

WordPressのメインループとサブループをわかりやすく簡単解説

WordPressには、

  • メインループ
  • サブループ

と呼ばれる投稿を表示するための機能が備わっています。

例えば、最新記事一覧やカテゴリー別の記事の一覧などを表示したい時に使う便利なものです。

この記事では、そのメインループとサブループの仕組みや概念について分かりやすく解説します。

今までコピペでなんとか凌いできた駆け出しエンジニアの人は、この記事を見て理解を深めましょう!

メインループとは?

メインループのコードを下記に添付します。

<?php if ( have_posts() ) : ?>
  <?php while( have_posts() ) : the_post(); ?>
      <h2><?php the_title(); ?></h2>
      <p><?php the_content(); ?></p>
  <?php endwhile;?>
<?php endif; ?>

まず投稿をブラウザに表示させるためのループのことをメインループと呼びます。

投稿や固定ページのテンプレートフィル内でループ処理を行うことによって、ページタイトルや本文の内容をブラウザに表示させることができます。

それでは各コードの意味を解説します。まずは1行目から。

  1. if (have_posts()) : //記事が存在するかチェック
  2. while (have_posts()) : //記事がある間は、処理を繰り返す
  3. the_post()  //次の記事情報を取得する

index.php、archive.php(※カスタム投稿なしの場合)に上記のメインループを記述すると、デフォルトの投稿にある記事一覧が表示されます。

タイトルの表示は、the_title(); で出力します。

投稿の本文を表示するには、the_content()を使用します。出力せず、文字列として取得するには、get_the_content()を使います。

色々とカテゴリーを分けたい場合は、カスタム投稿を使わないとごちゃごちゃになってしまうので、その辺も話が逸れてしまうので、知りたい方は下記の記事をご覧ください。

メインループ自体は取得したデータの繰り返し処理

コードの意味は見て頂いてわかるように、出力したデータを出力するのを繰り返してくださいという処理です。

それではデータはいつ取得しているのかって話なんですけど、テンプレートを読み込む前です。

WordPressは、

  1. リクエストされたURLによって取得データを判別
  2. データ取得
  3. テンプレートを表示

するという仕組みになっています。

この事前にデータを取得する最初の命令文をメインクエリと呼びます。

ワードプレスにおけるクエリとは「データベースへの投稿データ取得の要求」のことです。

メインクエリとサブクエリの違いは?

メインクエリとは

メインクエリはクエリの一つです。他のクエリと違う点もあるので確認しておきましょう!

  • メインクエリはワードプレス によって自動的に作成される
  • メインクエリはワードプレス起動直後に発行される
  • メインクエリは URL に基づいて作成される

メインクエリは、ユーザーが表示を要求した URL のページ作成に必要な投稿データを取得する要求になります。

サブクエリとは

サブクエリとはメインクエリ以外の全てのクエリのことを指します。

サブクエリが要求するクエリも確認しておきましょう。

  • 新たに投稿データを取得するための要求
  • メインクエリで取得されていない投稿データ(カテゴリー記事一覧とか)

話がまた説明すると脱線するので、メインクエリとサブクエリの理解はこれくらいのもので、ここでは留めておきましょう。

ワードプレスの内部処理のイメージ

  1. リクエストされたURLを解析
  2. URLからメインクエリを特定し、データベースからデータを取得
  3. URLから読み込むテンプレートを決定
  4. テンプレートを読み込む

これが一連の流れです。

メインループとは取得したデータの繰り返し処理のこと

改めてメインループとは、メインクエリで取得したデータをテンプレート内で出力するための繰り返し処理のことです。

メインクエリ以外のデータを取得したい場合に必要になってくるのが、

  1. サブクエリと
  2. サブループ

です。

なんとなく繋がってきそうですね? 勘が鋭い方はもうお分かりだとは思います。

それでは最後にサブループについて説明します。

サブループとは?

メインループでメインクエリという用語を説明して、

メインループは、メインクエリで取得したデータを、テンプレート内で出力するための繰り返し処理と説明しました。

サブクエリは、

メインクエリで取得するデータとは別のデータを取得するための、自分で作るクエリだということも解説しました

それではサブループはなんでしょう?もう分かりますね!

サブクエリで取得したデータを出力するための繰り返し処理のことです。

※実際の書き方は又機会があったら別記事にて解説します。

メインループとサブループの概念や仕組みについて本日は解説しました。

この仕組みがわかっていないと、if (have_posts()) : とりあえずテキトーに貼り付けとけば記事出力できるんでしょ?

みたいなテキトープログラマーになってしまいます。

  • メインループとメインクエリ
  • サブループとサブクエリ

をキチンと理解してワードプレス構築をスムーズに行いましょう。では。