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プラグインレビュー担当者の丁寧な対応
初めての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
コメント