MENU

ワードプレスが動くとき、どんなphpが動いているか3:wp-load.php

2010 11/09

前回、ワードプレスが動くとき、どんなphpが動いているか2:wp-blog-header.phpで、requireされたwp-load.phpについて。

/**
 * Bootstrap file for setting the ABSPATH constant
 * and loading the wp-config.php file. The wp-config.php
 * file will then load the wp-settings.php file, which
 * will then set up the WordPress environment.
 *
 * If the wp-config.php file is not found then an error
 * will be displayed asking the visitor to set up the
 * wp-config.php file.
 *
 * Will also search for wp-config.php in WordPress' parent
 * directory to allow the WordPress directory to remain
 * untouched.
 *
 * @package WordPress
 */

/** Define ABSPATH as this files directory */
define( 'ABSPATH', dirname(__FILE__) . '/' ); //*1

if ( defined('E_RECOVERABLE_ERROR') )
	error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
else
	error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);

if ( file_exists( ABSPATH . 'wp-config.php') ) { //*2

	/** 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' ) ) { //*3

	/** The config file resides one level above ABSPATH but is not part of another install*/
	require_once( dirname(ABSPATH) . '/wp-config.php' );

} else { //*4

	// A config file doesn't exist

	// Set a path for the link to the installer
	if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false) $path = '';
	else $path = 'wp-admin/';

	// Die with an error message
	require_once( ABSPATH . '/wp-includes/classes.php' );
	require_once( ABSPATH . '/wp-includes/functions.php' );
	require_once( ABSPATH . '/wp-includes/plugin.php' );
	$text_direction = /*WP_I18N_TEXT_DIRECTION*/'ltr'/*/WP_I18N_TEXT_DIRECTION*/;
	wp_die(sprintf('ファイルが見つかりません。インストールを開始するにはwp-config.php ファイルが必要です。お困りでしたら「wp-config.php の編集」を参照してください。ウィザード形式で wp-config.phpファイルを作成することもできますが、すべてのサーバーにおいて正常に動作するわけではありません。最も安全な方法は手動でファイルを作成することです。<a href="setup-config.php" class="button">設定ファイルを作成する</a>', $path),'WordPress &rsaquo; エラー', array('text_direction' => $text_direction));

}

上部のコメントの大体訳。

  • ABSPATH=絶対パスを設定します。
  • 次にwp−config.phpファイルを読み込みます。
  • wp-config.phpはwp-setting.phpを読み込みます。
  • wp-setting.phpはWordPressの環境設定をしてくれます。
  • wp-config.phpが見当たらなければ、エラーメッセージと一緒に、wp-config.phpを作るかどうかを聞きます。
  • もしかして、一個上の階層にあるかもしれないので、色々やってます

処理

*1で、「今後ABSPATHと書いたらここの階層(root/wordpress/)のことですよ」と決める。

define( 'ABSPATH', dirname(__FILE__) . '/' );

以下、config.phpが有るか無いかで、処理を条件分岐させてます。

*2で、もしconfig.phpがあれば呼び出し。

if ( file_exists( ABSPATH . 'wp-config.php') ) {
	require_once( ABSPATH . 'wp-config.php' );

すでに、インストールが済んでいる場合はこの処理になる。

*4で、config.phpが見当たらない場合はエラー出しつつ作るか聞く。
途中、$pathを決めるための処理が挟まっててややこしい。
エラーメッセージの直前に、インストールをするために必要なクラス、関数、pluginファイルを読み込んでいる。

else { //*4

	// A config file doesn't exist

	// Set a path for the link to the installer
	if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false) $path = '';
	else $path = 'wp-admin/';

	// Die with an error message
	require_once( ABSPATH . '/wp-includes/classes.php' );
	require_once( ABSPATH . '/wp-includes/functions.php' );
	require_once( ABSPATH . '/wp-includes/plugin.php' );
	$text_direction = /*WP_I18N_TEXT_DIRECTION*/'ltr'/*/WP_I18N_TEXT_DIRECTION*/;
	wp_die(sprintf('ファイルが見つかりません。インストールを開始するにはwp-config.php ファイルが必要です。お困りでしたら「wp-config.php の編集」を参照してください。ウィザード形式で wp-config.phpファイルを作成することもできますが、すべてのサーバーにおいて正常に動作するわけではありません。最も安全な方法は手動でファイルを作成することです。<a href="setup-config.php" class="button">設定ファイルを作成する</a>', $path),'WordPress &rsaquo; エラー', array('text_direction' => $text_direction));
}

*3は、一個上の階層にwp-config.phpがあった場合の処理。

wp-load.phpの役割

正常にインストールされていれば、そのまま進み(wp-setting.phpへ)、されてなければsetup-config.phpに移動させる。

この記事が気に入ったら
フォローしてね!

著者について

コメント

コメントする

目次
閉じる