WordPressのメインループとサブループについて簡単に嚙み砕いてみた

# WEB制作

2020.03.06

みなさま、こんにちは。

WordPressでテーマ作成をしている際に、よく「メインループ」「サブループ」という言葉を目にしますよね。

この言葉の意味が分からずに、Wordpressに苦手意識を持っている人は多いのではないでしょうか。

しかし特別難しいことではありません。
基本的に形で覚えてしまえば問題ありません。

代表的な形と簡単な概要を書いていきますので参考にしてみてください。

まず最初に基本的なところを

「メインループ」、「サブループ」を理解しやすくするために、まずはWordpressでページが表示される仕組みについて説明します。

WordPressで記事が表示される仕組み

  1. ユーザーがWordpressに表示したいページURLをリクエストする。
  2. WordPressがリクエストを受け、データベースに問い合わせをする。
  3. データベースからデータが送られてくる。
  4. WordPressがデータのテンプレートを判断し、表示する。
  5. ユーザーが記事を確認できるようになる。

この手順で呼び出されたデータをメインクエリと呼び、それを表示することをメインループと呼びます。

メインループ

前述した手順で呼び出したメインクエリを表示する(メインループ)するためのソースはこのように記述してください。

これにより、呼び出したいURLの条件に一致したデータが表示されます。

そしてこのループを使用すればWordpressでのサイト制作は可能になります。

細かく解説していきます。
ユーザーが https://progblog-web.com/700/ を見たいとリクエストした瞬間に、Wordpressが700というデータを取得し表示するという形になります。
ユーザーがhttps://progblog-web.com/blog を見たいとリクエストした場合は、このURLに適するメインクエリをWordpress上で判断し、ある限りすべてを表示します。

メインループはその名の通り、メインなので、ひとつのページで1件しか使えません。

そのため例えば記事ページでコンテンツをメインループで表示した場合、関連記事やランキング表示するための手段がサブループと呼ばれるものになります。

サブループ

上記で書いた通り、メインループ以外で使用するものがサブループと呼ばれます。
こちらはURLで自動的に取得されるメインループと違い、任意で取得するものになりますので、条件設定などが可能になります。

サブループには代表的な形が2つあります。

get_post()

 

こちらはWordpressのテンプレートタグを使用したループになります。
詳細はこちらを参照してみてください。

get_post() は次に紹介する WP_Queryメソッド を使用し、実行結果を受け取るテンプレートになります。
対して WP_QueryWP_Queryメソッド をそのまま利用するので、取得条件や、それに付随する機能をメインループと同じように利用できることになります。

WP_Query

WP_Query は wp-includes/class-wp-query.php に定義されているクラスで、WordPressへの複雑な投稿やページのリクエストを取り扱います。

get_post() も同様ですが「取得したい投稿の条件」をアレンジすることで、欲しいデータを呼び出すことができます。

条件はこちらを参照にしてみてください。

サブループに関してふたつの方法を紹介しましたが、正直どちらも大した違いがないので、使う方の好みによるかと思います。

ただ後々修正が出てくることを考えると機能の多いWP_Query を使用していれば問題ありません。

webサイトの制作、お任せください。

あくまでも基本料金になりますので、まずはご連絡ください。

コーディング

トップページ
(ヘッダー・フッター含む)

¥8,000~

コンテンツページ(1P)
(ヘッダー・フッター含まない)

¥4,000~

ランディングページ

¥15,000~

※アニメーションはオプション料金

デザイン

トップページ
(ヘッダー・フッター含む)

¥20,000~

コンテンツページ(1P)
(ヘッダー・フッター含まない)

¥5,000~

ランディングページ

¥20,000~

※コーディングとのセット料金

サイト構築

10ページ
(お問合せページを含まない)

¥100,000~

20ページ
(お問合せページを含まない)

¥175,000~

Wordpress導入

(上記)+¥50,000~

※お問合せページは¥10,000~