WordPressのwp-blog-header.phpの処理の流れを見ていきます。
まず、wp-blog-header.phpはindex.phpから呼び出されています。
index.phpについては以下の記事で確認しています。
またソースコードも簡単なので見ていきましょう!
GitHubにあるWordPressのコードはここです。
それでは確認していきます。
$wp_did_headerの存在チェック
if ( ! isset( $wp_did_header ) )
isset関数はマニュアルを確認すると以下の動作になります。
isset — 変数がセットされていること、そして
https://www.php.net/manual/ja/function.isset.phpNULL
でないことを検査する
index.phpをエントリーポイントとしてWordPressを起動した場合は当然$wp_did_headerに値は入っていません。
したがって、その場合!isset($wp_did_header)はtrueになります。
否定の演算子の「!」があることに注意してくださいね
以上からif文はindex.phpから起動した場合必ず実行されます。
$wp_did_headerをtrueに
$wp_did_header = true;
再度このファイルが実行されたときにif文が実行されないようにしています。
wp-load.phpファイルの読み込み
require_once( dirname( __FILE__ ) . '/wp-load.php' );
wp-blog-header.phpファイルと同じディレクトリ内のwp-load.phpファイルを読み込みます。
またrequire_once関数は何度同じ処理をしても一回しか読みこみません。
wp-load.phpではABSPATHの定義やwp-config.phpファイルの読み込みといった環境変数を取り込む役割があります。
WordPressのDBから値を取得
wp();
wp-includs/functions.phpで定義されているwp関数を呼び出します。
ここでWordPressのDBから必要な情報を取得しています。
詳細は長くなってしまいますので、別の記事で紹介したいと思います。
template-loader.phpファイルの読み込み
require_once( ABSPATH . WPINC . '/template-loader.php' );
ABSPATH定数はwp-load.phpもしくはwp-config.phpで定義されます。
wp-config.phpファイルの格納されているディレクトリがデフォルトで定義されています。
WPINC定数はwp-setting.phpで定義されています。
デフォルトでは固定値で「wp-includes」が格納されています。
組み合わせて考えてみましょう。
wp-config.phpの親ディレクトリの中にあるwp-includesフォルダの中にあるtemplate-loader.phpということになります。
言葉にするとよくわからないのでwp-includesは以下のような位置にあります。

wp-includesの中にtemplate-loader.phpがあります。
require_once関数を用いているので一回だけ読み込まれます。
まとめ
いかがだったでしょうか?
簡単にまとめると・・・・
wp-blog-header.phpの処理の流れ
- index.phpファイルから来た場合のみ以下の処理を行う
- wp-load.phpから環境変数などの設定を行う
- wp()でDBから値を取得する
- template-loader.phpでユーザのURLに基づいたテンプレートの適用を行う
このような流れになっています。
今回は以上になります。みなさんのWordPressライフの役に立てると幸いです。