WordPressの仕組みについて【メインクエリとフック】

WordPressへの理解を深めるためには、知っておいた方がいい概念があります。

「メインクエリ」と「フック」です。

この2つの概念を理解できると、WordPressの仕組みがわかり、

なぜこんな風にうごくのか?
(カスタマイズをする際に)どうすればいいのか?

といった、WordPressを学ぶ上で挫折しやすいポイントを解決することができます。

また、WordPressの根本的な仕組みを理解しないままでサイト作成を進めると、みんながシェアをしているコードを貼り付けるだけになります。

そうなると、バグが出たときやクライアントからの細かな要望に答えられない事態に陥ります。

アシのMちゃんアシのMちゃん

とりあえず動いたらOKってことで、ググったコードを貼り付けてるだけってことはよくあるよね。

ほどよしほどよし

デザイナーあるあるだな。

PHPを1からコーディングする必要はありませんが、WordPressがどういった仕組みで動作していて、PHPに何を書いていあるかは理解する必要があります。

そうすることで、

これが原因かな?
この要件はこうすればいいのでは?

と、トラブルや作業に必要な箇所に目処がつくようになり、クライアントに応えられる要望の幅も広がります。

この記事では、WordPressの理解を深めるための仕組み解説として、「メインクエリ」と「フック」について解説をします。

WordPressの仕組み

今回は、WordPressの根本的な仕組みーアーキテクチャ(論理的な構造)について解説をします。

どういう風にしてページを表示しているのか?

WordPressには、ページをサイトに表示するための規定の処理が決まっています。

  1. URLルーティング(リクエスト解析)
  2. メインクエリ(データベース解析)
  3. テンプレートファイルの出力

URLルーティング(リクエスト解析)

URLルーティングとは、URLに基づいてリクエストを解析して、ページを表示することをです。

トップページのURLが送られてきたときは、トップページをブラウザに表示します。

メインクエリ

WordPressは、指定されたURLに基づきリクエストを解析して、ページ内に必要な情報をデータベースにリクエストを開始します。

このデータベースに格納されている情報を引っ張ってくる条件付け(仕組み)をメインクエリと言います。

テンプレートファイルの出力

メインクエリにより引っ張られた情報をデザインテンプレートに埋め込み、HTML化されることでウェブサイトはブラウザに表示されます。

URLルーティングからメインクエリ、テンプレートファイルの出力の流れ

WordPressは、URLの信号をキャッチすると、URLを解析してそのURLのページに仕込まれたメインクエリを読み取り、データベースに情報をリクエストします。

そして、データベースから絞り込まれた情報を適切なテンプレートファイルを使ってソースコードを出力することでウェブサイトをブラウザに表示します。

これがWordPressの根本的な仕組みです。

アシのMちゃんアシのMちゃん

メインクエリに色々な設定をしておけば、動的サイトができるってことだね。

ほどよしほどよし

そうだ。ただし、WordPressは上記のように規定の処理がすでに決まってしまっている。そのためこの中では規定の処理をカスタマイズできないんだ。

WordPressが決まった処理しかできなければ、特定の情報以外をメインクエリで持ってくることができなくなります。

当然、要件にあった情報を持ってくる必要があるため、WordPressの仕様はそのときどきに合わせてカスタマイズする必要があります。

そこで必要となるのが、フックという概念です。

フックについて

フックは、WordPressの規定の処理の中で、それをカスタマイズをするときに使います。つまり、WordPressで少し細かい設定をするときに使うのが、フックです。

そのためフックが使えないと、WordPressを柔軟にカスタマイズできず、クライアントの要望にも十分に答えることができません。

そしてWordPressを開発するときには、このフックという概念を必ず使います。

ただし、フックを十分に理解していないと、

過去に使用したコードを使い回す
その辺に落ちているコードを使う

など、フックという概念を理解しないままでWordPressの開発を行うことになります。

ほどよしほどよし

理解しないでも開発はできるが、。

フックはいろんなところで使用できるフックがあります。

URLからリクエストを解析するときに動くフックもあれば、メインクエリで動くフックもある。そして、テンプレート出力時にも動作するフックがあります。

規定の流れの間でいろんな動作を加えたり、変えたりするカスタマイズするのがフックです。

これを理解しておくだけで、ややこしいWordPressの開発の概念を少しだけ理解できるようになります。