if ( ! defined( ‘ABSPATH’ ) ) exit; ってなんだ?

こんにちは。今回の記事はタイトルの通り、if ( ! defined( 'ABSPATH' ) ) exit;とは何かを考える記事です。この疑問が生まれたきっかけについては、以下の記事をご覧ください。

結論からいうとこのコードは「WordPressディレクトリへの絶対パスが、(defined)定数として定義されていなければ、現在の処理を終了する。」(Blue_Breath_Blogさまより引用)だそうです。ググれば回答は出てきます。ただ、数学の公式をただ使って問題を解くのと、自分で公式を導出して解くのでは理解度が変わるようにコードも自分で手を動かした方が理解度が上がる気がするので、今回はこのコードについて考えてみたいと思います。

目次

ABSPATHって何?

はい!まずキーワードっぽいこのABSPATHとは何なのか。とりあえず出力してみます。
(自作テーマを作って、自作テーマのphp上で出力させてます)
すると…

ABSPATHを出力しました。

publicのディレクトリ内には、wp-adminwp-contentwp-includesという3つのディレクトリのほか、index.phpwp-config.phpのようなファイルがあります。手動ダウンロード↓の記事作成時にダウンロードしたWordPressファイル群と今回のpublic内のファイルを見比べたところ、ほぼ同じだったため、WordPressを構成する一番基準のディレクトリといってもよさそうです。

つまり、ABSPATHにはwp-config.phpetc..があるディレクトリのパスが定義されていることがわかります。
ABSPATHについては、↓のブログでさらに具体的に説明されています!

WEMO
ABSPATHとはなんぞや。WordPressのインストールされたパスが定義されたグローバル定数らしい。 | WEMO はい、タイトルだけでほぼ解決してしまっていますが、今回はWordPressで定義されている定数、「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という定数が存在しなければ、処理を終了します」という意味になります!

参考

Blue_Breath_Blog
WordPress | PHPファイルが直接実行されるのを防ぐ | Blue_Breath_Blog 「defined( 'ABSPATH' ) || exit;」や、「if ( ! defined( 'ABSPATH' ) ) exit;」は、PHPファイルが外部から直接実行されるのを防ぎます。
いしかわろぐ「ウェブ・アプリ・ガ...
「if ( ! defined( ‘ABSPATH’ ) ) exit;」って?【WordPressプラグイン申請】 WordPressプラグイン申請後のレビュー後にコードに問題有りとのメールが。if ( ! defined( 'ABSPATH' ) ) exit;を追加するようにとのことだったのですが、ABSPATHって何?...
WEMO
ABSPATHとはなんぞや。WordPressのインストールされたパスが定義されたグローバル定数らしい。 | WEMO はい、タイトルだけでほぼ解決してしまっていますが、今回はWordPressで定義されている定数、「ABSPATH」についてのメモです。 初見では何者なのか全く分からなかったので...
あわせて読みたい
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次
閉じる