【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)のご紹介
ご訪問ありがとうございます。
今回は、【詳細編】ワードプレス起動から画面表示されるまでの流れ(WP構成やPHPの動き)についてご紹介します。
ホームページ作成/運用関連サイトマップのご紹介
ホームページ作成/運用サイトマップをご紹介します。
ホームページ作成/運用サイトマップのご紹介 |
|||
学び/学習TOP > IT|ゲーム作り|HP作成 | |||
HP作成Top > WordPress|Cocoon|便利テクニック | |||
【ワードプレス/WordPress】 ディレクトリ・ファイル構造|画面表示までの流れ(概要|詳細)|データベース一覧 ■サーバー移行時のエラー・トラブル解決 画面が表示されない| 【テーマ:Cocoon】 拡張デザイン(一覧|インライン|マーカー|ボックス系(一覧|アイコン|案内|白抜き|タブボックス|バッジ|マイクロコピー)) 【便利テクニック】 サクラエディタ|正規表現 |
|||
【レンタルサーバー】 | |||
Xサーバー 特徴||||| | |||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
【詳細編】ワードプレス起動から画面表示されるまでの流れ(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つの仕事が行われています。
- 「wp-load.php」の実行
- 「wp」関数の実行
- 「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」のソースコードは長いため、このファイルのお仕事のポイントだけご紹介していきます。
- 「wp-settings.php」では、 前半に主にワードプレスが起動するために必要な関数の読み込み、
- 後半は主にテンプレートファイルを実行するために必要な関数の読み込み が行われています。
- その後データベースへの接続の仕事担当へ引き継がれます。
「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つ目は、テンプレートファイル受け渡しまでのワードプレス起動には問題ないですので、カスタマイズしたテンプレートファイルなどがあれば、それらを再度確認してみて下さい 。
ホームページ作成/運用関連サイトマップのご紹介
ホームページ作成/運用サイトマップをご紹介します。
ホームページ作成/運用サイトマップのご紹介 |
|||
学び/学習TOP > IT|ゲーム作り|HP作成 | |||
HP作成Top > WordPress|Cocoon|便利テクニック | |||
【ワードプレス/WordPress】 ディレクトリ・ファイル構造|画面表示までの流れ(概要|詳細)|データベース一覧 ■サーバー移行時のエラー・トラブル解決 画面が表示されない| 【テーマ:Cocoon】 拡張デザイン(一覧|インライン|マーカー|ボックス系(一覧|アイコン|案内|白抜き|タブボックス|バッジ|マイクロコピー)) 【便利テクニック】 サクラエディタ|正規表現 |
|||
【レンタルサーバー】 | |||
Xサーバー 特徴||||| | |||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
ホームページ作成・運用関連ページのご紹介
ホームページ作成・運用関連ページをご紹介
「学ぶ」学習用関連サイトマップのご紹介
「学ぶ」学習用関連サイトマップをご紹介します。
「学ぶ」学習用関連サイトマップのご紹介 |
|||
学び/学習TOP > IT|ゲーム作り|HP作成 | |||
【IT】エディタ/正規表現|プログラミング| 【ゲーム作り】STG作り方|C言語の入門/基礎|リファレンス/サンプル文 【HP作成】WordPress|Cocoon|便利テクニック |
|||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「学ぶ」学習用関連ページのご紹介
「学ぶ」学習用関連ページをご紹介
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。