前回見てみたindex.phpはwp-blog-header.phpを呼び出していました。
少し理解できて、段々と面白くなってきました。
今回はそのwp-blog-header.phpを見ていきます。
wp-blog-header.phpもファイルを読み込んでいるだけ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php /** * Loads the WordPress environment and template. * * @package WordPress */ /* if ( !isset($wp_did_header) ) { $wp_did_header = true; // Load the WordPress library. require_once( dirname(__FILE__) . '/wp-load.php' ); // Set up the WordPress query. wp(); // Load the theme template. require_once( ABSPATH . WPINC . '/template-loader.php' ); } |
- if ( !isset($wp_did_header) ) { ……
ifは条件によって処理を分けるもので書式は
1 2 | if (式) 文 |
あるいは文が複数行に渡る場合は{}で括って
1 2 3 | if (式){ 文 } |
elseifやelseで条件をいくつもつくれて、条件の入れ子もできます。
1 2 3 4 5 6 7 8 9 10 | if (式){ 文 } elseif(式){ 文 } else { 文(どの条件にも当てはまらない場合の処理) } |
!とisset
issetは指定した変数が空っぽ(NULL)ならTRUEを返します。
!は論理演算子の一つで否定を表します。つまり式がFALSEならTRUEを返します。
なので、if isset()…… は「指定した変数が空っぽでなければ……」という意味になりますが、 if !isset()……は「指定した変数が空っぽなら」という意味になります。
- $wp_did_header = true;
これはwp_did_headerっていう変数にtrueを格納しています。
PHPではVisual BasicやCのような変数の宣言は必要ないそうです。なので変数に値を格納した段階で使えるようになります。
格納しようとしたときに変数があればあったで良いし、無ければ用意されるっていう感じですね。
- require_once( dirname(__FILE__) . ‘wp_load.php’ );
色々出てきました。順に確認してみます。
require_onceは前回出てきたrequireとほぼ同じですが、同一ファイルは1回しか読み込まない点だけ違います。初期化など何度も実行されると困る処理なんかに使うみたいです。
dirnameは(directory nameってことでしょう)指定したパスから任意の階層の親ディレクトリのパスを返してくれるみたいです。書式は
1 | dirname('パス' [, level(何階層上の親ディレクトリを取得するか)=1); |
levelはデフォルトで1ですが、つまり指定したパスの直上のディレクトリを返すってことです。例えば
dirname(‘C:\Users\Hoge’, 1)ならC:\Usersが返されます。
dirname(‘C:\Users\Hoge’, 1)ならC:\Usersが返されます。
__FILE__はPHPの定義済み定数で、phpファイルのフルパスが格納されています。
良く見るとdirname(……と ‘wp-load.php’の間にドット(.)がありますが、これは結合演算子といって文字列の結合に使います。
ちなみに変数に代入につつ文字列をつなぎたい(変数に文字列を追加したい)場合は結合代入演算子(.=)を使えばオッケーです。
- wp()
wp()関数を呼び出しています。どっかに定義されているんでしょう。
- ABSPATHと WPINC
ファイルの最後でまた別のファイルを呼び出していますが
パスの指定部分でABSPATHとWPINCと書かれています。
これらは両方ともWordPressの定義済み定数みたいで、それぞれ
WordPressのインストールフォルダとワードプレスのインクルードディレクトリ名が格納されています。
まとめ
wp-blog-header.phpも基本的にはファイルを読み込んでいるだけでした。今日分かったことをまとめてみると
- 条件分岐はif(……でC言語と同じ感じ。
- 変数のNULLチェックはisset()関数で
- !は「否定」の論理演算子
- PHPで変数の宣言は不要。ついでに型指定も不要みたい。
- 1度だけ読み込みたいファイルはrequire_once()で
- dirname()は指定したパスから任意の階層のディレクトリを取得
- __FILE__はphpファイルのフルパス
- 文字列の結合はドット(.)で
- ABSPATHはWordPressのインストールディレクトリでWPINCはWordPressのインクルードフォルダ(WordPressINClude)