「if ( ! defined( ‘ABSPATH’ ) ) exit;」って?【WordPressプラグイン申請】

「if ( ! defined( ‘ABSPATH’ ) ) exit;」って?【WordPressプラグイン申請】 WordPress

本ページはアフィリエイトプログラムを利用しています

WordPressのプラグインを作成し申請。
申請して2日目、レビュー待ちをしていたところにメールが1通届きました。
レビューはしてくれたようですが、メールの文頭には”There are issues with your plugin code.”の一文。プラグインのコードに問題有りということですね。
文を読み進めると、”Allowing Direct File Access to plugin files”と問題点が書かれており、プラグインファイル(PHP)に直接アクセスできてしまうことが問題とされているようでした。

if ( ! defined( 'ABSPATH' ) ) exit;

しかも丁寧に対処法まで書かれており、全てのPHPファイルのコードの文頭に上記コードを記述するようにとのこと。ん、「ABSPATH」って何?
WordPressでは初歩のコードなのかもしれませんが、ちょっと気になったので調べてみました。

WordPressプラグインレビュー担当者の丁寧な対応

「if ( ! defined( ‘ABSPATH’ ) ) exit;」って?【WordPressプラグイン申請】

初めてのWordPressプラグイン申請。
プラグインを作るのも初めてな上、申請も初めてだったので正直すんなりとOKになるとは思っていなかったところ……。

前日のようにメールが届いたのでした。コードに問題があるって、やっぱり。
内容はすぐに対応できるものでホッとしたのですが、それにしてもレビューした上に対処法まで書いてメールをくれるとは思いませんでした。
しかもやりとりはこのメールに返信する形で続きます。担当者からの返信も早くて驚きました。
ちなみにこのやりとりには続きがあったのですが、そのことについてはまた最後に。

ABSPATHに定義されているのはwp-config.phpまでのパス

メールに書かれた対処法に従えば、指定のコードをPHPファイルのコードの文頭に追加するだけのようですが、コードをまずは調べてみます。

if ( ! defined( 'ABSPATH' ) ) exit;

まず、プラグインファイル内のコードでABSPATHを出力してみることに。
“print_r(ABSPATH);”としてみると、”/Users/ユーザ名/opt/WP導入ディレクトリ/”(ローカル構築)という形で出力されました。
definedは指定した名前の定数が存在するかどうかを調べる関数。
どうやら、WordPressを導入したディレクトリまでのパスが”ABSPATH”という定数に定義されているようです。
ここで思い出しました。ABSPATHってどこかで見た記憶があったんですよね。
ということでwp-config.phpのコードを見てみると、やっぱり最下部の方にありました。

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
  define('ABSPATH', dirname(__FILE__) . '/');

wp-config.phpで定義されているんですね。
ABSPATHは”Absolute Path”のことで、WordPressが導入されたディレクトリ、つまりwp-config.phpが置かれたディレクトリまでのパスが定義されているようです。

if ( ! defined( ‘ABSPATH’ ) ) exit; を全てのプラグインPHPファイルに追加

コードの内容がわかったので、プラグインに使っている全てのPHPファイルの文頭に、

if ( ! defined( 'ABSPATH' ) ) exit;

のコードを追加していきます。
コードを追加後、プラグインが正しく動作するかを確認。
また、直接ブラウザからPHPファイルにアクセスして、上記コード以下のコードが動作しないか(exitが効いているか)を確認します。
確認後に担当者宛に修正した旨を返信して作業完了です。

まとめ

さて、ここまででABSPATHの意味もわかりプラグインのコードも修正完了。
これで安泰かなとホッとしていたところ、コード修正のメールを送信してすぐに担当者よりメールが返ってきました。
メールの文面は短くたった2行。

You need to remove this:
print_r(ABSPATH);

担当者さんホントすみません。。w

楽天Kobo電子書籍ストア
¥2,200 (2026/02/12 13:23時点 | 楽天市場調べ)

コメント

タイトルとURLをコピーしました

Fatal error: Uncaught Error: Call to undefined function wp_parse_auth_cookie() in /home/c8315293/public_html/taupe.site/wp-includes/user.php:3632 Stack trace: #0 /home/c8315293/public_html/taupe.site/wp-content/plugins/microsoft-clarity/clarity-server-analytics.php(105): wp_get_session_token() #1 /home/c8315293/public_html/taupe.site/wp-content/plugins/microsoft-clarity/clarity-server-analytics.php(35): clarity_construct_collect_event() #2 /home/c8315293/public_html/taupe.site/wp-includes/class-wp-hook.php(341): clarity_collect_event() #3 /home/c8315293/public_html/taupe.site/wp-includes/class-wp-hook.php(365): WP_Hook->apply_filters() #4 /home/c8315293/public_html/taupe.site/wp-includes/plugin.php(522): WP_Hook->do_action() #5 /home/c8315293/public_html/taupe.site/wp-includes/load.php(1308): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /home/c8315293/public_html/taupe.site/wp-includes/user.php on line 3632