学び

【WordPress画面表示 詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)ご紹介

【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)のご紹介 学び
スポンサーリンク

【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)のご紹介

ご訪問ありがとうございます。
今回は、【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)についてご紹介します。

「NieR:Automata( | 中古・新品通販の駿河屋

ホームページ作成/運用関連サイトマップのご紹介

ホームページ作成/運用サイトマップをご紹介します。

シューティングゲーム | ゲーム | 中古・新品通販の駿河屋

【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)のご紹介

【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)についてご紹介します。

 

WordPressの構成一覧のご紹介
WordPressの構成一覧のご紹介
フォルダ wp-admin 管理画面を構成するファイルが入ったフォルダ
フォルダ wp-content テーマやプラグインなどメインとなるファイルが入ったフォルダ
フォルダ wp-includes API、クラス、関数などのファイルが入ったフォルダ
php index.php ファイル構成の基本的なファイル、トップページにも使われる
php wp-blog-header.php wp-load.phpやテンプレートファイルを読み込み
php wp-load.php 関数やクラス定義が書かれたファイルを読み込む
php wp-config.php 各種設定情報が書かれたファイル
php wp-settings.php 変数、関数、クラスの基本設定
php wp-signup.php ユーザー名やサイト名、アドレスなどサイト登録に必要なファイル
php wp-login.php ユーザー登録、認証に必要なファイル
php wp-activate.php ユーザーアカウントを有効にするファイル
php wp-trackback.php トラックバックに必要なファイル
php wp-mail.php メールからブログ投稿する機能が書かれたファイル
php wp-comments-post.php コメント機能が書かれたファイル
php wp-cron.php WordPressの自動処理システムを管理するファイル
php xmlrpc.php 管理画面以外からの記事投稿
txt license.txt WordPressのライセンスが書かれたファイル
html readme.html WordPressに関する説明書が書かれたファイル
html readme-ja.html 日本語による説明書
txt .htaccess アクセスを制御するとても重要なファイル。
「wp-content」フォルダ内一覧のご紹介
wp-contentフォルダ内一覧のご紹介
フォルダ
ファイル名
内容
language 翻訳ファイルを格納
plugins プラグインファイルが格納されています
themes テーマファイルが格納されています
upgrade アップデートファイルが格納されています
uploads アップロードした画像ファイルなどが格納されています

【1】「index.php」の実行

ユーザーが、ホームページを訪れるとウェブサーバー(Apache/Nginxなど)がフォルダ直下の「index.php」を実行します。

すると「index.php」は、require によって同フォルダの 「wp-blog-header.php」が実行されます。

require __DIR__ . '/wp-blog-header.php';
▼「index.php」サンプルファイルのご紹介
<?php
define( 'WP_USE_THEMES', true );

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';

【2】wp-load.php のお仕事

「index.php」により実行された「wp-blog-header.php」は、大きく3つの仕事が行われています。

  1. 「wp-load.php」の実行
  2. 「wp」関数の実行
  3. 「template-loader.php」の実行です。
「WP:ホームページ表示までのPHPの動き」について
順番 実行者 動作内容
1 ウェブサーバー(Apache/Nginxなど) index.phpを実行
2 index.php wp-blog-header.phpを実行
3 wp-blog-header.php wp関数を実行
4 wp-blog-header.php template-loader.phpを実行
5 template-loader.php テーマ内のsingle.phpファイルを実行
6 single.php 投稿ページを構成するのに必要なPHPを実行してページを作成。
ヘッダー:header.php、
サイドバー:sidebar.php、
フッター:footer.phpなど
「wp-load.php」の実行コード
require_once __DIR__ . '/wp-load.php';
「wp」関数の実行コード
wp();
「template-loader.php」の実行コード
require_once ABSPATH . WPINC . '/template-loader.php';
▼「wp-blog-header.php」サンプルファイルのご紹介
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( ! isset( $wp_did_header ) ) {

	$wp_did_header = true;

	// Load the WordPress library.
	require_once __DIR__ . '/wp-load.php';

	// Set up the WordPress query.
	wp();

	// Load the theme template.
	require_once ABSPATH . WPINC . '/template-loader.php';

}

【2-1】「wp-blog-header.php」内の「wp-load.php 」のお仕事

「wp-blog-header.php」3つの仕事の1つ「wp-load.php 」では「wp-config.php」(データベースへの接続など)が実行されます。

「wp-config.php」の実行コード
if ( file_exists( ABSPATH . 'wp-config.php' ) ) {

	/** The config file resides in ABSPATH */
	require_once ABSPATH . 'wp-config.php';

} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) )
 {

wp-config.php の実行(データベースへの接続など)

「wp-load.php 」からの実行で「wp-config.php」ではワードプレスの設定読み込みが行われます。 ここでワードプレスの設定が読み込まれ、ワードプレスはこれらの設定に基づいて処理を行います。

「wp-config.php」内のデータベース接続設定コード

「wp-config.php」内のデータベース接続設定コードをご紹介します。

define( 'DB_NAME', 'database_name_here' );

/** Database username */
define( 'DB_USER', 'username_here' );

/** Database password */
define( 'DB_PASSWORD', 'password_here' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

▼データベースエラー時には「wp-config.php」を確認

ホームページが急に表示されなくなったり、ファイルのアップロードやサーバーの移行時には、上手く動作しなくなった時には「wp-config.php」のサーバー設定情報が正しく記載されているのかを確認してみて下さい。

以前経験した、サイト管理者のデータベースエラーの失敗談

コペンギン(サイト管理者)は、以前、「,●●●●●●” 」(●はデータベース名)のように記載してエラーになっていました。 どこが記載ミスかわかりますか?

「’●●●●●●”」の「”」です。本来は、半角「’」のところをコピー時に「”」が重複してしまい、ホームページが見れなくなりました(汗)。

define( 'DB_NAME', '●●●●●●'' );
▼「wp-config.php」サンプルコードのご紹介
<?php

/** The name of the database for WordPress */

define( 'DB_NAME', 'database_name_here' );

/** Database username */
define( 'DB_USER', 'username_here' );

/** Database password */
define( 'DB_PASSWORD', 'password_here' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

/**#@-*/

/**
 * WordPress database table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/documentation/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

/* Add any custom values between this line and the "stop editing" line. */



/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';


「wp-settings.php」 の実行

「wp-config.php」の最後では下記が行われ、次に 「wp-settings.php」 が実行されることになり、ここからが本格的にワードプレスの起動が始まります。

require_once ABSPATH . 'wp-settings.php';
「wp-settings.php」にお仕事はワードプレスが起動するために必要な関数の読み込み

「wp-settings.php」のソースコードは長いため、このファイルのお仕事のポイントだけご紹介していきます。

  1. 「wp-settings.php」では、 前半に主にワードプレスが起動するために必要な関数の読み込み、
  2. 後半は主にテンプレートファイルを実行するために必要な関数の読み込み が行われています。
  3. その後データベースへの接続の仕事担当へ引き継がれます。
「wp-settings.php」関数定義ファイルの読み込みサンプル

wp-settings.phpでは、ほとんどの処理を「 require」での外部の関数定義ファイルの読み込んでいます。


// Include files required for initialization.
require( ABSPATH . WPINC . '/class-wp-paused-extensions-storage.php' );
require( ABSPATH . WPINC . '/class-wp-fatal-error-handler.php' );
require( ABSPATH . WPINC . '/class-wp-recovery-mode-cookie-service.php' );
require( ABSPATH . WPINC . '/class-wp-recovery-mode-key-service.php' );
require( ABSPATH . WPINC . '/class-wp-recovery-mode-link-service.php' );
require( ABSPATH . WPINC . '/class-wp-recovery-mode-email-service.php' );
require( ABSPATH . WPINC . '/class-wp-recovery-mode.php' );
require( ABSPATH . WPINC . '/error-protection.php' );
require( ABSPATH . WPINC . '/default-constants.php' );
require_once( ABSPATH . WPINC . '/plugin.php' );

データベースへの接続

いくつかのワードプレスセットアップ処理が行われた後、続いてデータベース接続が行われます。この接続が行われるのは下記部分です。

// Include the wpdb class and, if present, a db.php database drop-in.

global $wpdb;
require_wp_db();

これ以降、データベースからのデータの読み込み、データベースへのデータの書き込みが行えるようになります。

サイトの設定読み込み、そしてテーマ名の取得

データベースへの接続が完了後、いくつかの処理を経た後に 「サイトの設定読み込み」が実行されます。

データベースからウェブサイトの情報が読み込まれます。

ここでサイトのタイトルや種々の設定(1ページに表示する記事数など)と共に、有効化しているテーマの名前が取得されます。

// Run the installer if WordPress is not installed.
wp_not_installed();

テーマのセットアップ

続いて関数定義ファイルの読み込みやプラグインのセットアップが行われた後に 「テーマのセットアップ」が実行されます。

// Load the functions for the active theme, for both parent and child theme if applicable.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
	if ( file_exists( $theme . '/functions.php' ) ) {
		include $theme . '/functions.php';
	}
}

ここでは有効化されたテーマの「functions.php」が実行され、これ以降「functions.php」で定義されている関数が実行可能になるため、テンプレートファイルでも実行することができるようになります。

「テーマ:Cocoon」の場合

人気のテーマ「Cocoon」では「wp-content」配下の「themes」フォルダに配置されたcocoon-master/functions.phpが実行されます。

「functions.php」が実行される「wp-content」配下の「themes」フォルダの位置
wp-admin 管理画面を構成するファイルが入ったフォルダ
wp-includes API、クラス、関数などのファイルが入ったフォルダ
wp-content
テーマやプラグインなどメインとなるファイルが入ったフォルダ
language 翻訳ファイルを格納
plugins プラグインファイルが格納されています
themes テーマファイルが格納されています
upgrade アップデートファイルが格納されています
uploads アップロードした画像ファイルなどが格納されています

▼この処理のちょっと前には言語設定なども行われています。

アクションフックの実行

テーマのセットアップが終わると「after_theme_setup」アクションフック、「init」アクションフック、「wp-loaded」アクションフックにフックされた関数の実行が行われます。

do_action( 'after_setup_theme' );

/* 〜略〜 */
do_action( 'init' );

/* 〜略〜 */
do_action( 'wp_loaded' );

▼ここまでが wp_loaded.php の処理の流れになります。

wp 関数の実行

「wp_loaded.php」の処理が完了すると、続いて「wp-blog-header.php」から「wp」関数が実行されます。

この「wp」関数は 「wp-includes」フォルダ直下の「 functions.php」 に定義されています。

wp 関数の実行されるwp-includes/functions.phpの格納先
wp-admin 管理画面を構成するファイルが入ったフォルダ
wp-includes
API、クラス、関数などのファイルが入ったフォルダ
functions.php
「wp」関数が実行される。
wp-content
テーマやプラグインなどメインとなるファイルが入ったフォルダ
language 翻訳ファイルを格納
plugins プラグインファイルが格納されています
themes テーマファイルが格納されています
upgrade アップデートファイルが格納されています
uploads アップロードした画像ファイルなどが格納されています

投稿記事データの取得(メインクエリの発行)

さらにこの「wp」関数から「wp-includes/class-wp.php」で定義されている 「WP」クラスの「main」メソッドが実行され、その中でさらに「query_posts」メソッドが実行されます。 メインクエリの発行

    /**
	 * Set up the Loop based on the query variables.
	 *
	 * @since 2.0.0
	 *
	 * @global WP_Query $wp_the_query WordPress Query object.
	 */
	public function query_posts() {
		global $wp_the_query;
		$this->build_query_string();
		$wp_the_query->query( $this->query_vars );
	}
いよいよ投稿記事データの取得

以降、どんどん関数を辿っていくと、データベースに対してメインクエリの発行が行われ、いよいよ表示しようとしているページの「投稿記事データ」が取得されます。

template-loader.php の実行

投稿記事データ取得後、「wp-blog-header.php」から「template-lader.php」が実行され、とうとうこのファイルで「single.php」や「page.php」等のテンプレートファイルが実行されることになります。

ホームページが表示されなくなった場合の対応について

このような流れで、ユーザーの訪問、ウェブサーバー(Apache/Nginxなど)からindex.phpを実行、その後phpファイルが様々な仕事を行い、テンプレートファイルを実行するために必要な準備整います。

もし運営しているホームページが表示されなくなった場合、ワードプレスの起動の中で確認しておいたほうがいい箇所は4つあります。

  • 1つ目は、ワードプレス起動に必要なフォルダ・ファイルが配置されていること
  • 2つ目は、データベース設定が正しく記載されていること(wp-config.php)、
  • 3つ目は、設定しているテーマが正しく配置・設定されていること(Cocconなど)
  • 4つ目は、テンプレートファイルが正しく配置・設定されていることです。
ワードプレス公式サイトからファイルをダウンロード

1つ目のワードプレス起動に必要なフォルダ・ファイルは、サイト固有のものではないので、ワードプレス公式サイトからファイルをダウンロードして配置すれば大丈夫です。

データベース接続エラー「wp-config.php」の確認

2つ目のデータベースの設定は、よくファイルをアップロードした時に上書きされてデータベースエラーを起こしてしまうことがよくあります。FTPで「wp-config.php」の設定内容をよく確認してみて下さい。

テーマの配置・設定状況の確認

3つ目のテーマもホームページ表示に大きく関係しているので「wp-content」配下の「themes」に配置されている現在利用しているテーマの配置・設定状況を確認してみて下さい。

テンプレートファイルの確認を

4つ目は、テンプレートファイル受け渡しまでのワードプレス起動には問題ないですので、カスタマイズしたテンプレートファイルなどがあれば、それらを再度確認してみて下さい 。

ホームページ作成/運用関連サイトマップのご紹介

ホームページ作成/運用サイトマップをご紹介します。

シューティングゲーム | ゲーム | 中古・新品通販の駿河屋

ホームページ作成・運用関連ページのご紹介

ホームページ作成・運用関連ページをご紹介

「学ぶ」学習用関連サイトマップのご紹介

「学ぶ」学習用関連サイトマップをご紹介します。

シューティングゲーム | ゲーム | 中古・新品通販の駿河屋

「学ぶ」学習用関連ページのご紹介

「学ぶ」学習用関連ページをご紹介

コペンギン・サイトマップ

コペンギンのサイトマップをご紹介します。

ゲーム・古本・DVD・CD・トレカ・フィギュア 通販ショップの駿河屋
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋

コペンギンサイトマップ関連ページのご紹介

コペンギン関連ページをご紹介します。

【ゲームTOP】ゲーム関連ページのご紹介

【ゲームTOP】ゲーム関連ページのご紹介
【TOP】ゲーム関連ページのご紹介 ご訪問ありがとうございます。 今回は、ゲーム関連ページをご紹介します。 PS5ソフトELDEN RING

【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介

【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
書籍・雑誌サイトマップ関連ページのご紹介 ご訪問ありがとうございます。 今回は、書籍・雑誌サイトマップ関連ページをご紹介します。 その他コミック初版)AKIRA(デラックス版) 全6巻セット / 大友克洋

【ホビーTOP】ホビーサイトマップ関連ページのご紹介

【ホビーTOP】ホビーサイトマップ関連ページのご紹介
【TOP】ホビーサイトマップ関連ページのご紹介 ご訪問ありがとうございます。 今回は、ホビーサイトマップ関連ページをご紹介します。 プラモデル1/100 MG MS-09 ドム 「機動戦士ガンダム」
タイトルとURLをコピーしました