WordPressのwp-blog-header.phpのコード

wordpress_logo

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 — 変数がセットされていること、そして NULL でないことを検査する

https://www.php.net/manual/ja/function.isset.php

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は以下のような位置にあります。

where_is_template-loader

wp-includesの中にtemplate-loader.phpがあります。

require_once関数を用いているので一回だけ読み込まれます。

まとめ

いかがだったでしょうか?

簡単にまとめると・・・・

wp-blog-header.phpの処理の流れ

  1. index.phpファイルから来た場合のみ以下の処理を行う
  2. wp-load.phpから環境変数などの設定を行う
  3. wp()でDBから値を取得する
  4. template-loader.phpでユーザのURLに基づいたテンプレートの適用を行う

このような流れになっています。

今回は以上になります。みなさんのWordPressライフの役に立てると幸いです。