WordPressをカスタマイズする時にときどき以下のような条件式をみかけます。
処理にあまり影響がなかったので気にしなかったのですが、WordPressについてもっと理解を深めたいと思って調べてみました。
<?php if ( !defined( 'ABSPATH' ) ) exit; ?>;
目次
defined関数
PHPで指定した名前の定数が存在するか判定し、定義されていればtrue、定義されていなければfalseを返す関数です。
なので、ABSPATHという名前で定数としてどこかで定義されているので、trueで判定して以降の処理が行われるということが分かります。
では、このABSPATHという定数はどこで、どのような定義がされているのでしょうか。
ABSPATHが定義されているファイル
ABSPATHは「wp-config.php」の下の方に下記のような記述で定義されています。
/** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/');
コメントの部分を翻訳すると「WordPressディレクトリへの絶対パス」という意味になります。
つまりABSPATHはWordPressディレクトリの絶対パスが定数として定義されているということです。
では、絶対パスの値は具体的には何が設定されているのでしょうか。
ABSPATHの定数の値
定数の値に該当する"dirname(__FILE__)"を分解すると次のようになります。
"__FILE__"はマジック定数と呼ばれるもので、ファイルのフルパスを意味します。
"dirname"はカレントディレクトリから親ディレクトリのパスを返す関数です。
つまり、wp-config.phpまでのディレクトリパスを定義しているということになります。
例)wp-config.phpのファイルパスが「/home/kusanagi/xxxxx/DocumentRoot/wp-config.php」の場合、ABSPATHが定義されている定数の値は次の通りになります。
/home/kusanagi/xxxxx/DocumentRoot/
まとめ
いかがでしたでしょうか。
触ることはほとんどないと思いますが、ABSPATHの値を変更するとWordPress全体に影響があるので、もし変更する場合は十分に注意してください。