WordPressが舞台裏でどのように機能するかを理解することは、非常に興味深いことです。ほとんどのユーザーにとって、それは単純なもののように思えます。URLを入力すると、ページがすぐに読み込まれます。しかし、実際にはバックグラウンドで多くのことが起こっています。
数年前にWordPressを使い始めたとき、私たちはその仕組みを深く掘り下げました。そして今、私たちはその知識を簡単な言葉で皆さんと共有するためにここにいます。これにより、WordPressについてより深く理解できるようになります。
このガイドでは、WordPressの内部構造を詳しく説明します。物事をより明確にするために、わかりやすいインフォグラフィックも作成しました。

WordPressとは何ですか?
WordPressはウェブサイトビルダーであり、コンテンツ管理システムです。誰でもあらゆる種類のウェブサイトを作成するために使用できるオープンソースソフトウェアです。
2003年にブログプラットフォームとして始まりましたが、すぐにCMSへと進化し、その後本格的なウェブサイト構築プラットフォームになりました。現在、インターネット上の全ウェブサイトの43%以上がWordPressによって動いています。
その進化、歴史、メリットとデメリットについては、WordPressとは何か、そしてWordPressサイトの構築にかかる費用に関する包括的なガイドをご覧ください。
なぜWordPressの仕組みを学ぶべきなのか?
WordPressはオープンソースソフトウェアであり、誰でもそのコードを研究し、それ用のアプリ(プラグイン)やテンプレート(テーマ)を作成できます。
長年にわたり、多くの初心者がWordPressのソフトウェアとしての仕組みを学ぶだけで、すぐに上級ユーザーになっているのを見てきました。
また、WordPressのパフォーマンスを向上させる方法や、プロジェクトでより良いコードを書く方法についても説明します。
このガイドでは、プロセス全体をステップバイステップで説明します。ユーザーがページをリクエストしてから、そのページが完全に読み込まれるまでを扱います。
準備はいいですか?始めましょう。

詳細については、以下のチュートリアル記事も参照してください。
1. wp-config.php ファイルの読み込み
wp-config.php はWordPressの設定ファイルです。WordPressサイトのグローバル変数を設定し、WordPressのデータベース情報を含んでいます。明白な理由から、これはWordPressが最初に読み込むファイルです。
wp-config.phpファイルとその編集方法について詳しくはこちらをご覧ください。
2. デフォルト定数の設定
wp-config.php ファイルを読み込んだ後、WordPressはデフォルト定数の設定に進みます。
これには、デフォルトのWordPressのアップロード場所、最大ファイルサイズ、およびwp-config.phpファイルで設定されたその他のデフォルト定数などの情報が含まれます。
3. advanced-cache.php ファイルの読み込み
サイトにadvanced-cache.phpファイルが存在する場合、WordPressは次にそれを読み込みます。
このファイルはドロップインファイルとして機能し、いくつかの人気のあるプラグイン、特にWordPressキャッシュプラグインで使用されます。サイトでこのファイルを使用している場合、プラグイン画面に「ドロップイン」という新しい項目が表示されます。

4. wp-content/db.php ファイルのロード
WordPressでは、開発者が独自のデータベース抽象化レイヤーを作成し、wp-contentフォルダ内に配置されたdb.phpファイルでロードすることができます。WordPressキャッシュプラグインは、データベースのパフォーマンスを向上させるために一般的にこれを使用します。
ウェブサイトにこのファイルが存在する場合、WordPressはそれをロードします。
5. MySQL への接続とデータベースの選択
WordPress は、さらに処理を進めるために必要な情報をすべて取得しました。MySQL サーバーに接続し、データベースを選択します。
WordPress がデータベースに接続できない場合、「データベース接続確立エラー」が表示され、WordPress はここで終了します。
すべてが正常に機能した場合、次のステップに進みます。
6. object-cache.php または wp-includes/cache.php ファイルをロード
WordPress は object-cache.php ファイルを探します。存在しない場合は、wp-includes/cache.php ファイルをロードします。
7. wp-content/sunrise.php ファイルをロード
マルチサイトネットワークの場合、WordPressはsunrise.phpファイルが存在すればwp-contentフォルダを探します。
8. ローカライゼーションライブラリをロード
WordPress は wp-includes フォルダの l10n.php ライブラリをロードします。このファイルは WordPress のローカライゼーションシステムをロードし、翻訳をロードし、ロケールを設定します。
WordPressを他の言語で使用する方法については、こちらのガイドをご覧ください。
9. マルチサイトプラグインをロード
マルチサイトネットワークの場合、WordPressはマルチサイトプラグインを読み込みます。WordPressマルチサイトネットワークでのプラグインの動作方法について詳しくはこちらをご覧ください。

10. アクション 'muplugins_loaded' を実行
WordPressは現在、アクションmuplugins_loadedを実行します。このアクションは、WordPressマルチサイトのネットワークアクティブ化されたプラグインでのみ利用可能です。
11. アクティブなプラグインをロード
WordPressは現在、サイト上のすべてのアクティブなプラグインを読み込みます。これは、WordPressデータベースのoptionsテーブルにあるactive_pluginsエントリを確認することで行われます。これにより、WordPressはサイトにインストールされているがアクティブ化されていないプラグインを無視できます。
12. pluggable.php ファイルをロード
pluggable.php ファイルには、WordPress プラグインによって再定義できる関数が含まれています。
WordPress は、他のプラグインがこのファイル内の関数を既に定義しているかどうかを確認します。そうでない場合は、それらの関数を自分で定義します。
13. アクション ‘plugins_loaded’ を実行
WordPress はアクション ‘plugins_loaded’ を実行します。
これにより、開発者はすべての有効なプラグインがロードされた後に実行される関数をフックできます。
14. リライトルールをロード
WordPressは現在、リライトルールを読み込みます。これらのリライトルールは、WordPressがSEOフレンドリーなURLを使用するのに役立ちます。
15. $wp_query、$wp_rewrite、$wp をインスタンス化
この時点で、WordPress は次のオブジェクトをロードします。
$wp_query: WP_Query クラスを保持するグローバルインスタンス。これは、WordPress が通常の WordPress クエリ形式でどのコンテンツをリクエストしたかを示します。
$wp_rewrite: WP_Rewrite クラスを保持するグローバルインスタンス。リライトルールと関数が含まれており、WordPress がリクエストされたコンテンツを表示するためにどの URL を使用するかを指示します。
$wp: WP クラスのグローバルインスタンスには、リクエストを解析してメインクエリを実行する関数が含まれています。
16. アクション ‘setup_theme’ を実行
WordPressは次に、「setup_theme」アクションを実行します。このアクションは、WordPressテーマが読み込まれる前に実行されます。
17. 子テーマの functions.php ファイルをロード
functions.phpファイルはプラグインとして機能し、WordPressテーマで使用され、テーマ固有の機能をご利用のウェブサイトに追加します。子テーマを使用している場合、WordPressは現在、子テーマのfunctions.phpファイルを読み込みます。
それ以外の場合は、現在アクティブなテーマの functions.php ファイルを読み込み続けます。
18. 親テーマの functions.php ファイルを読み込む
子テーマを使用している場合、WordPress は親テーマの functions.php ファイルを読み込みます。
19. アクション ‘after_setup_theme’ を実行する
このアクションは、WordPress がテーマをセットアップし、テーマの関数を読み込んだ後に実行されます。これはテーマで利用可能な最初のアクションです。
20. 現在のユーザーオブジェクトをセットアップする
この時点で、WordPressは現在のユーザーオブジェクトを読み込みます。これにより、WordPressはユーザーの役割と権限に従ってリクエストを管理できます。
21. アクション ‘init’ を実行する
これまで WordPress は必要なすべての重要な情報を読み込みました。ここで、'init' アクションを発火させます。このアクションは、コアで利用可能なブロックや、そのウェブサイトにインストールされているプラグインによって提供されるブロックも登録します。
このアクションにより、開発者は WordPress が上記の情報すべてを読み込んだ後に実行する必要があるコードを追加できます。
22. アクション ‘widget_init’ を実行する
widget_initアクションにより、開発者はウィジェットを登録することができ、この時点で実行する必要のあるコードを実行できます。
23. wp() を実行する
WordPress は現在、wp-includes/functions.php ファイルにある wp() 関数を呼び出します。これにより、WordPress のクエリグローバル変数 $wp、$wp_query、$wp_the_query がセットアップされ、$wp->main が呼び出されます。
24. リクエストを解析する
これで WordPress はユーザーのリクエストを解析するために必要なすべての情報を持っています。まず、リライトルールを確認してユーザーのリクエストに一致させます。
次に、クエリ変数フィルターを実行し、アクションフックを要求し、ヘッダーリクエストを送信します。
25. クエリを実行する
クエリに一致するコンテンツがない場合、WordPress は is_404 変数を設定します。
それ以外の場合、WordPress はクエリ変数を読み込み続けます。
その後、WP_Query->get_posts() を実行します。
次に、WP_Query オブジェクトを使用して DO_ACTION_REF_ARRAY 'pre_get_posts' アクションを発火させます。
WordPress はクエリをクリーンアップし、最終チェックを実行するために apply_filters を実行します。
次に、データベースから投稿を取得し、posts_results および the_posts フィルターを適用します。
クエリ部分は、WordPress が投稿を返すことで終了します。
26. アクション 'template_redirect' を実行
WordPress は template_redirect アクションを実行します。このフックは、WordPress がどのテンプレートページを読み込むかを決定する直前に実行されます。
27. フィードテンプレートの読み込み
要求されたコンテンツがRSSフィードの場合、WordPressはフィードテンプレートを読み込みます。
28. テンプレートの読み込み
WordPressは現在、WordPressテンプレート階層に基づいてテンプレートファイルを検索します。次に、通常はWordPressループを含むテンプレートを読み込みます。
29. アクション「シャットダウン」を実行
すべての PHP 実行を終了する直前に、WordPress は shutdown という最後のアクションを発火させます。
WordPress はここで動作を停止します。コードを実行し、ユーザーが要求した Web ページを生成しました。
これで、Web ホスティングサーバーは WordPress によって生成された Web ページを送信することで、ユーザーのリクエストに応答します。
このページには、HTML、CSS、および Javascript コードが含まれており、ユーザーのブラウザに画面に表示する方法を指示します。
すごいですよね? これらすべてがミリ秒単位で起こるのです。もしあなたがこれらの最高のWordPressホスティングサービスのいずれかを使用しているなら、あなたのページは理想的には数秒で読み込まれるでしょう。
この記事がWordPressの舞台裏での仕組みを学ぶのに役立ったことを願っています。また、WordPress管理エリアの保護に関するヒントをご覧になるか、便利なWordPressのヒント、トリック、ハックが満載のガイドをご覧ください。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。

オラフ
プロセス全体がどのように機能するか考えたことはありませんでしたが、これらの詳細を説明しているのはこれが初めての記事です。少し技術的すぎて、誰もが気に入るわけではないかもしれませんが、このインフォグラフィックを作成してくれたことに感謝しています。これまでに見たことがありませんでした。ステップバイステップでプロセス全体を見ることができて非常に興味深かったです。
デニス・ムトミ
この解説は信じられないほど啓発的です!
読み込みプロセスのステップバイステップの説明は特に価値があり、WordPressがさまざまなファイル(wp-config.php、advanced-cache.php、object-cache.phpなど)をどのように読み込んで実行するかについてのセクションは、特定の最適化がどのように機能するかを理解するのに大いに役立ちました。
モイヌディン・ワヒード
ページが舞台裏でどのように読み込まれ、ユーザーがリクエストを行ったときに何が起こるのかを見るのは、本当に興味深いです。
インフォグラフィックの助けを借りて、非常にうまく説明されています。
これにより、多くのことが瞬く間に起こることに驚かされます。
これは非常に強力で、テクノロジーが私たちをどこまで導いてくれたのか、非常に力を与えてくれます。
ウェブサイトの舞台裏の側面を美しく説明したこの記事に本当に感謝しています。
WPBeginnerサポート
Glad our guide was helpful
管理者
イジー・ヴァネック
ページが生成される前にバックグラウンドで起こるすべてのことの、これほど包括的な要約を見たのは初めてです。正直に言うと、これほど詳細な情報は他では見つかりませんでした。ページが読み込まれる前にどれだけのプロセスが発生しなければならないかを考えると、WordPressとサーバーがすべてを1秒以内に管理しているというのは、今日のサーバーとシステムができることの素晴らしさです。
Dayo Olobayo
全く同感です。このインフォグラフィックは、WordPressの裏側にある魔法を理解したい人にとって素晴らしいリソースです。コードとデータを、私たちが毎日見ている動的なWebページに変換する複雑な仕組みを本当に強調しています。
MJB
うーん – ステップ0が少し欠けているような気がします
これは正しい仮定ですか?
URLが私のホストされているウェブサーバーに入ってきて
例えば私のホームページをリクエストします
そして、ウェブサーバーはステップ(1)を起動しますか?
それがステップ(24)まで実行され
WPが次のステップを判断するために受信したURLを解析しますか?
WPBeginnerサポート
ステップ0は確かにサイトへのリンクであるURLであり、ステップ15あたりで特定のページが考慮されます。
管理者
マイク・ロス
ルートにあるindex.phpについてはどうですか?
理解できません…WordPressの初期化の順序が全く異なるガイドが存在します。
WPBeginnerサポート
Index.php はテーマファイル用であり、テーマ階層については以下のガイドで説明しています。
https://www.wpbeginner.com/wp-themes/wordpress-template-hierarchy-explained/
管理者
マイク・ロス
いいえ、テーマのホームページテンプレートのことではありません。WordPress コアの一部であるルートの index.php について話しています。これは wp-blog-header.php をトリガーし、それが wp-load.php をロードして WordPress 環境全体をセットアップします。
WPBeginnerサポート
The index.php in the root folder tells WordPress to load your theme
管理者
テリー・ウッズ
正しいです
ジェイソン
なぜ wp-config.php から始めるのですか? index.php からだと思っていました
WPBeginnerサポート
それはテーマ用であり、WordPress 自体用ではありません。index.php については、以下のガイドのテンプレート階層をご覧ください。
https://www.wpbeginner.com/wp-themes/wordpress-template-hierarchy-explained/
管理者
ペトル・チュクル
これがその記事です。ありがとうございます!
WPBeginnerサポート
Glad our guide was helpful
管理者
フアン・ジョンソン
こんにちは、wpbeginnerさん。
あなたのシーケンスで、wpがこれをして、それからあれをする、と言及されているのに気づきました。具体的に、wp()のインスタンスはどこにありますか?サーバー上ですか?Googleブラウザを使用して初期ロードページ投稿リクエストと、ログイン後のwpダッシュボードの最終ロードの間で、これは起こりますか?
WPBeginnerサポート
ロードの仕組みを理解するために、インフォグラフィックをもう一度確認すると良いでしょう。
管理者
フアン・ジョンソン
私はプログラマーです。ウェブデザインにますます関わるようになっていますが、裏で何が起こっているのかを知りたいという気持ちを捨てきれません。この記事は、自信を持ってウェブページを構築するための基盤を与えてくれました。
WPBeginnerサポート
Glad our guide was helpful
管理者
ポール・マクデヴィット
これは素晴らしいです。古い期限切れのプラグイン、PHP の更新などでいくつかの問題に遭遇し、ウイルスにも(おそらく前の項目が原因で)感染しました。すべてロックダウンされ、クリーンアップされましたが、PHP ファイルのいずれか一つを見るのがスパゲッティのボウルを読むようなもので、アクティビティのシーケンスを理解していなかったので、イベントのシーケンスをよりよく理解したいと思っていました。なので、本当に素晴らしいです。気に入りました。
ありがとう
WPBeginnerサポート
Glad our article was helpful
管理者
ナレシュ
非常に分かりやすい記事です。
WPBeginnerサポート
Thank you
管理者
チネンイェ
WordPressが何をするのか、WordPressで投稿を作成・共有するにはどうすればよいのか、本当に知りたいです。サイトを作成する以外に、WordPressは何をしてくれるのですか?
WPBeginnerサポート
WordPressを使用すると、HTMLやCSSの知識がなくてもサイトを作成できます。投稿を共有するために、通常はソーシャルメディアプラグインを確認したいでしょう:https://www.wpbeginner.com/plugins/best-social-media-plugins-for-wordpress/
管理者
ガネーシュ
とても興味深い
Adrian
興味深いですが、WordPressの仕組みの定義としてはあまり適切ではありません。これはWordPressが何をするかを説明していますが、どのように行うかを説明していません。何をするかだけでなく、どのように行うかについても知ることができれば役立ちます。例えば、どのテーマを読み込むかをどのように判断するのでしょうか?「どのように」がなければ、上記すべては非常に高レベルなものになります。
アミール・サリーム
17. 子テーマの functions.php ファイルをロード
functions.phpファイルはプラグインとして機能し、WordPressテーマでウェブサイトにテーマ固有の機能を追加するために使用されます。子テーマを使用している場合、WordPressは子テーマのfunctions.phpファイルを読み込みます。
それ以外の場合は、現在アクティブなテーマの functions.php ファイルを読み込み続けます。
18. 親テーマの functions.php ファイルを読み込む
[子テーマを使用している場合]、WordPressは親テーマのfunctions.phpファイルを読み込みます。
角括弧内のテキストを確認し、ここにあるすべての文言を置き換えてください [親テーマを使用している場合]。
ありがとう。
ケイレブ
アミールさん、OPが言いたいのは、子テーマがある場合、当然親と子のfunctions.phpがあり、WordPressはまず子テーマのfunctions.phpを読み込んでから親のものを読み込むということだと思います。そうでなければ、親のfunctions.phpを直接読み込むだけです。
アルタブ・ホッセン
この素晴らしい説明とインフォグラフィックをありがとうございます!
Kristian
そして人々はWordPressサイトが遅い理由を不思議に思っています。これはすべてのページビューごとに実行時にすべてを行います!
ジョンポール・オンウエメ
インフォグラフィックをありがとうございます
デボラ
私にはまだ複雑に思えますが、テクノロジーはどれもそうですよね
ジェイソン
このポスターを印刷して販売するおつもりはありますか?あまり興味を引くか、利益が出るかは分かりませんが、とても素敵なグラフィックなので、オフィスの壁に飾るのに良いかもしれません。
anis
この記事をありがとうございます。ずっと前からローディングの様々なステップを知りたかったのです。
データベース抽象化レイヤーとは何ですか?また、どのように設定しますか?