WordPressはどうやって動いているのか?①
- 2019.09.19
- Wordpress

私はよくWordPressを使ってサイトを作りますが、正直どういう仕組みで動いているのかはよくわかっていません。
せっかくなので、ソースコードを追って行ってどのようにページを表示をしているのかを調べてみようと思います。
index.php
まず最初に呼び出されるのは、WPが設置してあるディレクトリにあるindex.phpです。
ここでは、同ディレクトリのwp-blog-header.phpを呼び出します。
wp-blog-header.php
ここでは、以下の3つの処理を行います。
- wp-load.phpの呼び出し
- wp()の実行
- template-loader.phpの呼び出し
wp-load.php
まずABSPATHという変数を定義して、それにWPをインストールしたルートディレクトリのパスを代入します。
次にwp-config.phpがルートディレクトリに存在するかどうかをチェックして、wp-config.phpがあればそれを読み込みます。
なかった場合はそのファイルを探したりしてくれるのですが、今回はルートにある前提で読み進めていきます。
wp-config.php
WPをインストールするときに最初に触ることが多いこのファイルでは、MySQL、秘密鍵、DBのテーブル接頭辞の設定、そしてABSPATHをもう一度確認します。
なぜもう一度ABSPATHを確認するのかは謎ですが、これらの処理が終了したら最後にwp-settings.phpを呼び出します。
wp-settings.php
このファイルでは、最初にWPINCという定数を定義します。
WPINCはWordPressで使う関数やクラスを定義しているファイル群を格納しているフォルダであるwp-includes
を指します。
そして、定義後にwp-includesフォルダからいくつかのファイルを呼び出します。
呼び出されるファイル
- load.php
- class-wp-paused-extensions-storage.php
- class-wp-fatal-error-handler.php
- class-wp-recovery-mode-cookie-service.php
- class-wp-recovery-mode-key-service.php
- class-wp-recovery-mode-link-service.php
- class-wp-recovery-mode-email-service.php
- class-wp-recovery-mode.php
- error-protection.php
- default-constants.php
- plugin.php
全て見ていくときりがないので、以下の3ファイルを見ていこうと思います。
- load.php
- default-constants.php
- plugin.php
load.php
ここではWordPressのセットアップに必要ないくつかの関数が宣言されています。
その中にはメンテナンスモードやデバッグモードに関するものや$wpdbにDBの情報を格納する関数などもあります。
さらに調べてみると現在ではほとんど機能していない関数もあるようです。
例えばwp_unregister_GLOBALS()はregister_globalsというPHPの黒歴史とも呼べる機能を使用しているかどうか判定して、使用していればいろいろ頑張る関数です。
しかし、register_globalsはだいぶ前にPHPから消えてしまったので、今日では相当古いPHPを使用しない限り必要ありません。
default-constants.php
ここでは、定数やグローバル変数を定義します。
ここで定義したものは基本的にwp-config.phpで上書きができます。
plugin.php
ここでは、add_filterやapply_filtersなどWordPressで多用されるフック系の関数が定義されます。
いったんまとめ
今回はここまでで次回はwp-settings.phpの処理の続きから書いていこうと思います。
参考
https://humanshell.net/2011/08/wordpress-initialization/
http://memories.zal.jp/WP/blog/20090608_1564.html
-
前の記事
画面のスクロールバーの幅を取得する 2019.09.18
-
次の記事
カスタムフィールドの値だけで作ったページを分割する 2019.10.29