WordPressの処理の流れ
だいたいこんな感じ。
- □ index.php
ユーザがアクセスするファイル - wp-blog-header.php を読み込む↓
- □ wp-blog-header.php
WP環境とテンプレートをロードする為のファイル - wp_load.php を読み込む↓
- □ wp_load.php
Bootstrap用file - wp_config.php を読み込む↓
- □ wp_config.php
ブログ毎のユニークな設定ファイル - MySQL の設定
- Unique Key と Salt の設定
- 言語設定(WP_LANG)
- デバッグモード設定( WP_DEBUG)
- wp-settings.php を読み込む↓
- □ wp-settings.php
WordPressで必要な定数/グローバル変数/関数/クラスの設定を行う -
【WordPressのコアの初期化】
▼コア部分で利用する定数/変数/関数の初期化
- 初期化に必要なファイルの読み込み
- 定数の初期化(wp_initial_constants())
▼事前処理
- PHPとMySQLのバージョンをチェック(wp_check_php_mysql_versions())
- マジッククオートをOFFに
- タイムゾーンをUTCに設定
- register globalsをOFFに
- $_SERVER 変数のサーバ環境によって発生する差異を修正(wp_fix_server_vars())
- IISとか、GGIモードで動かした場合とか
- ファビコンとしてリクエストされた場合の処理(wp_fabicon_request())
- メンテナンスモードかチェック(wp_maintenance())
- タイマーをセット(timer_start())
- デバッグモードかチェック(wp_debug_mode())
- キャッシュの処理(キャッシュが有効の場合は advanced-cashe.phpを読み込み)
- WP_LANG_DIRの設定(wp_set_lang_dir())
- コア部分で必要なファイルを読み込み
▼DB関連の初期化
- wpdbクラスを読み込む(require_wp_db())
- データベースの接続及び処理を担当する wpdb クラスを読み込む
- wpdbクラス内部dでは、MySQL 関数を利用している模様
- データベースのプレフィックスと、フィールドの型を設定(wp_set_wpdb_vars())
- オブジェクトキャッシュ処理(wp_start_object_cache())(デフォルトではOFF)
▼コアの初期化残処理
- フィルター/アクション/フックおよび多言語化対応の初期化
- マルチサイトの初期化(デフォルトではOFF)
- SHOTINIT定数がtrueであれば以上で初期化終了 [デフォルトはfalse]
以上で最低限必要な初期化処理完了
【WordPressの初期化】
▼多言語対応/インストール/関数等の初期化
- 多言語処理用ファイルの読み込み(l10n.php)
- インストールされていなかったらインストーラーを起動(wp_not_installed())
- 残りの必要なファイル群を読み込み
- class-wp-walker.php
- class-wp-ajax-response.php
- formatting.php
- capabilities.php
- query.php
- theme.php
- user.php
- meta.php
- general-template.php
- link-template.php
- author-template.php
- post.php
- post-template.php
- category.php
- category-template.php
- comment.php
- comment-template.php
- rewrite.php
- feed.php
- bookmark.php
- bookmark-template.php
- kses.php
- cron.php
- deprecated.php
- script-loader.php
- taxonomy.php
- update.php
- canonical.php
- shortcodes.php
- media.php
- http.php
- class-http.php
- widgets.php
- nav-menu.php
- nav-menu-template.php
- admin-bar.php
- class-wp-walker.php
▼マルチサイトとプラグインの初期化
- マルチサイトで必要なファイルの読み込み
- プラグインディレクトリ定数の設定(wp_plugin_directory_constants())
- ”muplugins_loaded”アクションを実行(do_action( 'muplugins_loaded' ))
▼プラグインの読み込み
- クッキーの設定(wp_cookie_constants())
- SSLの設定(wp_ssl_constants())
- 共用グローバル変数の定義(vars.php)
- タクソノミーとポストタイプの初期化(create_initial_taxonomies(); create_initial_post_types();)
- テーマディレクトリの登録
- アクティブなプラグインを読み込み
- pluggable な関数を読み込み(pluggable.php, pluggable-deprecated.php)
- 内部エンコーディング設定(wp_set_internal_encoding())
- キャッシュが有効であればキャッシュの事後読み込み(wp_cache_postload())
- ”plugins_loaded”アクション実行(do_action( 'plugins_loaded' ))
▼サニタイズ処理
- wp_functionality_constants()
- マジッククオートと$_REQUESTの設定(wp_magic_quotes())
- ”sanitize_comment_cookies”アクション実行(do_action( 'sanitize_comment_cookies' ))
▼WP_Query / WP_Rewrite / WP / WP_Widget の初期化
- WordPress Query Object の作成($wp_the_query = new WP_Query())
- WP_Rewriteオブジェクトの作成($wp_rewrite = new WP_Rewrite())
- WordPressオブジェクトの作成($wp = new WP())
- WidgetFactoryオブジェクトの作成($wp_widget_factory = new WP_Widget_Factory())
▼テーマの初期化
- ”setup_theme”アクション実行(do_action( 'setup_themes' ))
- テンプレート用定数の設定(wp_templating_constants())
- load_default_textdomain()
- Find the blog locale
- テーマ用関数の読み込み(STYLESHEETPATH . '/functions.php', TEMPLATEPATH . '/function.php')
- ”after_setup_theme”アクション実行(do_action( 'after_setup_theme' ))
- Load any template functions the theme supports
▼WPの初期化
- register_shutdown_function( 'shutdown_action_hook' );
- 現在アクセスしているユーザー用にWPをセットアップ($wp->init())
- ”init”アクションを実行(do_action( 'init' ))
- check site status (is_multisit())
- ”wp_loaded”アクションを実行(do_action( 'wp_loaded' ))
- 初期化に必要なファイルの読み込み
- □ wp-settings.php
- □ wp_config.php
- wp-config.phpがない場合は、最低限の環境を読み込み、wp-config.phpを作成するようにメッセージを表示する。
- wp_config.php を読み込む↓
- □ wp_load.php
- wp() 関数を実行(クエリーが処理される)
- template-loader.php を読み込む↓
- wp_load.php を読み込む↓
- □ wp-blog-header.php
- wp-blog-header.php を読み込む↓