こんにちは。今回の記事はタイトルの通り、if ( ! defined( 'ABSPATH' ) ) exit;
とは何かを考える記事です。この疑問が生まれたきっかけについては、以下の記事をご覧ください。
結論からいうとこのコードは「WordPressディレクトリへの絶対パスが、(defined)定数として定義されていなければ、現在の処理を終了する。」(Blue_Breath_Blogさまより引用)だそうです。ググれば回答は出てきます。ただ、数学の公式をただ使って問題を解くのと、自分で公式を導出して解くのでは理解度が変わるようにコードも自分で手を動かした方が理解度が上がる気がするので、今回はこのコードについて考えてみたいと思います。
ABSPATHって何?
はい!まずキーワードっぽいこのABSPATH
とは何なのか。とりあえず出力してみます。
(自作テーマを作って、自作テーマのphp上で出力させてます)
すると…
public
のディレクトリ内には、wp-admin
、wp-content
、wp-includes
という3つのディレクトリのほか、index.php
やwp-config.php
のようなファイルがあります。手動ダウンロード↓の記事作成時にダウンロードしたWordPressファイル群と今回のpublic
内のファイルを見比べたところ、ほぼ同じだったため、WordPressを構成する一番基準のディレクトリといってもよさそうです。
つまり、ABSPATH
にはwp-config.php
etc..があるディレクトリのパスが定義されていることがわかります。ABSPATH
については、↓のブログでさらに具体的に説明されています!
defined()、exitとは?
definedについて
まずdefined
をググります!phpの公式ドキュメントによると…
defined — 指定した名前の定数が存在するかどうかを調べる
php公式ドキュメントより
だそうです。
exitについて
同じようにググると
exit — メッセージを出力し、現在のスクリプトを終了する
php公式ドキュメントより
ということは….?
ABSPATH
を出力するとパスがでてきたので定数自体は存在していると思われます。そのため、
if(defined( 'ABSPATH' )){echo "おはよう";}
とすれば、おはようと出力されるはず…!
されました…!
phpで「!」は否定なので、、、if(!defined( 'ABSPATH' ))
で、「もしABSPATH
という定数が存在しなければ」という意味になります。確認のため、以下で試してみます。
if(!defined( 'ABSPATH' )){
echo "ABSPATHは存在しません";
}else{
echo "ABSPATHは存在しています";
}
「ABSPATHは存在しています」が出力されたので、if(!defined( 'ABSPATH' ))
で、「もしABSPATH
という定数が存在しなければ」という意味であることは間違いなさそうです。
if ( ! defined( 'ABSPATH' ) ) exit;
ということは「もしABSPATH
という定数が存在しなければ、処理を終了します」という意味になります!
コメント