WordPressの起動1 – WordPressテンプレートファイルの構成

本記事のポイント

エントリポイントであるindex.phpからインクルードされるwp-blog-header.phpが基点になり、wp-load.phpで環境設定、wp-config.phpでDB接続情報、wp-settings.phpでWordPress初期設定を実行します。

次にwp-includs/functions.phpのwp関数を実行し、URLにマッチしたクエリを確定し、wp-includes/query.phpのquery_postsメソッドで投稿を取得します。

URLにて確定されたクエリは、MySQLクエリに変換され、wp_postテーブルとwp_postmetaテーブルからposts配列に、表示すべき投稿・固定ページデータを格納し、template-loader.phpにてテンプレート階層の優先度に従って、ベーステンプレートが決定されます。

WordPress起動時のコアファイルの役割の概要

  1. -index.php(WordPressのエントリーポイント)
  2. —–wp-blog-header.php
  3. ———wp-load.php(環境設定)
  4. ————-wp-config.php(DB接続情報)
  5. —————–wp-settings.php(WordPress初期設定のコア)
  6. ———wp関数(WordPressメイン関数実行)
  7. ———template-loader.php(テンプレート選択)

エントリポイントであるindex.phpからインクルードされるwp-blog-header.phpがすべての基点になり、このようにエントリーポイントがindex.phpから別ファイルに分離されていることで、WordPressのインストールディレクトリを自由に変更することができます。

  • ①wp-load.php(環境設定)⇒②wp-config.php(DB接続情報)⇒③wp-settings.php(WordPress初期設定のコア)

というリンクの中でWordPress起動のための前準備をします。

次にwp-includs/functions.phpの中に定義されているwp関数を実行しますが、その中からwp-includes/class-wp.phpに定義されているWPクラスのmainメソッドを実行することでURLにマッチしたクエリを確定し、wp-includes/query.phpにあるWP_Queryクラスの$wp->query_postsメソッドで投稿を取得します。

URLにて確定されたクエリは、MySQLクエリに変換され、WP_Queryクラスのオブジェクトである$wp_queryグローバル変数の$wp_query->posts配列に、wp_postテーブルとwp_postmetaテーブルから、表示すべき投稿・固定ページデータを格納し、のちに選択されるテンプレート上に出力します。

最後にtemplate-loader.phpにてテンプレート階層に従って、該当テンプレートが決定されます。

ベーステンプレートの構成

template-loader.phpの条件文の中で、テンプレート階層の優先度によってベーステンプレートが選択されます。

index.php配下

  1. 404.php
  2. search.php
  3. single-投稿タイプスラッグ.php>single.php
  4. カスタムテンプレートスラッグ.php>page-任意のページスラッグ.php>page.php
  5. front-page.php>home.php

archive.php配下

  1. category-スラッグ.php>category.php
  2. archive-投稿タイプスラッグ.php
  3. taxonomy-タクソノミスラッグ.php>taxonomy.php
  4. date.php

パーツテンプレートの構成

ベーステンプレートから読み込まれる共通パーツテンプレートで、例えばsearchform.phpはheader.phpやsidebar.phpからget_search_form()で読み込まれ、検索結果をsearch.phpに表示します。

  1. header.php:get_header()で読み込み
  2. footer.php:get_footer()で読み込み
  3. sidebar.php:get_sidebar()で読み込み
  4. sidebar-archives.php:get_sidebar(‘archives’)で読み込み
  5. sidebar-categories.php:get_sidebar(‘categories’)で読み込み
  6. loop-main.php:get_template_part(‘loop’, ‘main’)で読み込み
  7. searchform.php:get_search_form()で読み込み

テンプレートタグというWordPress関数

起動時のコアモジュールから生成された、URLに基づく適切な情報を格納したグローバル変数$wp_post->postsから、テンプレートタグ(WordPressビルトイン関数)で、データをブラウザにレンダリング表示します。

WordPressでデータを表示するには、テンプレートタグ以外にPHP本体のビルトイン関数が使えますが、両者の違いとしてテンプレートタグは管理画面の「設定」に基づいて値を表示するなど、よりWordPress寄りな関数になっています。

header.php:ヘッダーパーツテンプレート

searchform.php:検索フォームパーツテンプレート

search.php:検索結果ベーステンプレート

sidebar-categories.php:カテゴリサイドバーパーツテンプレート

front-page.php:トップページベーステンプレート

index.php:カテゴリ・アーカイブベーステンプレート

loop-main.php:WordPressループパーツテンプレート

single.php:個別記事ページベーステンプレート

404.php:HTTPステータス404テンプレート