5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WordPressの処理フロー

Posted at

WordPressの処理フロー

WordPressの処理フローは、MVCとかFluxなどと全然違うみたいなので、ちょっとアウトプットしておきます。

リクエストパラメーターが全ての起点

WordPressにはMVCで定義するようなルーティングがありません。
MVCだとルーティングを定義する事によりURLとコントローラーを対応させ、コントローラーでデータを取得してビューに表示させます。
WordPressではその仕組みではないので、リクエストのパラメーターからデータの取得・テンプレートの選択を行います。

リクエストがあると、まずパラメーターの解析を始めます。解析されたパラメーターは、WPオブジェクトの$wp->query_varsに格納されます。
WPオブジェクトは、パラメーターの解析だけでなく、WordPressの処理全体のフローも担当してます。

リクエストパラメーターの意味

$wp->query_vars変数に保存される値ですが、フィルタリングがかかっています。
実はフィルタリングするためのホワイトリストは、以下の二つです。

  • $wp->public_query_vars(外部からの入力)
  • $wp->private_query_vars(内部からの入力)

ホワイトリストに登録されているキーだけが受け付けられます。
パラメーターを追加したい時(例えば、独自のキーを使いたい時)は、query_varsフィルター、$wp->add_query_var()を利用する事で追加できます。
※今回は追加するところまで経験しなかったので、別記事参考にしてください。

$wp->public_query_vars(外部からの入力)

$wp->public_query_varsにデフォルトで設定されている基本的なパラメーターの一覧はこちらにあります。
クエリ変数

メインクエリ

メインクエリとは、リクエストに対する検索のことです。
リクエストパラメーターが確定すると、次に出力対象のデータが検索されます。この検索のことをメインクエリと呼びます。

WP_Queryクラス

WP_Queryクラスは、主に投稿データの問い合わせに利用されるクラスです。
WP_Queryオブジェクトに検索条件を与えて検索すると、SQLの組み立て、DBの問い合わせを行って、結果を返してくれます。
その過程で検索条件を解析した結果をクエリフラグとして保持されます。クエリフラグには、どのタクソノミーのアーカイブ検索なのか?などの情報が判定され保存されます。
メインクエリでは、このクエリフラグを調べて、現在のリクエストがどのページへの問い合わせなのかを確認しています。
WP_Query

テンプレートの階層

データが取得された後は、テンプレートが読み込まれます。
メインクエリが、どのページなのか確認してくれますが、
実際にどのテンプレートを使うか?は、テンプレート選択のルールに従われます。
選択されるテンプレートは階層構造になっており、詳細な方から順番にテンプレートが存在するのか?の確認が行われます。

テンプレート階層

このテンプレート階層を利用する事で、異なるリクエストに対して違うデザインのテンプレートを利用できます。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?