WPINCとABSPATHの違いは何ですか?


34

プラグイン開発者は、プラグインを直接アクセスから保護するのが一般的です。私はそれを行う2つの方法を見ました:

if ( ! defined( 'WPINC' ) ) die;

そして

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

WPINCとABSPATHの違いは何ですか?それを行うための「正しい」方法はどれですか?

回答:


19

それらは次のように定義されます。

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

dirnameは、親ディレクトリのパスを返すPHP関数であり、 wp-includes自明です。

ABSPATHWPが最初に読み込むものの1つであり、見た目も優れているため、より良いと言えます。


4
そこには本当の正しい方法はありません、と私はいつも使用してif ( ! defined( 'ABSPATH' ) ) exit;、多分、このスニペットの範囲がよりあるので、そのワードプレスは、より良い「WPINC」でロードされていることを確認していることを考慮し、...しかしwordpressfull「WP」と見つめるが。
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;そしてif ( ! defined( 'ABSPATH' ) ) exit;、あなたのプラグイン・ファイルへの直接アクセスを防止することにより、セキュリティの余分なレイヤを追加します。ABSPATHWordPressのコアで定義されているPHP定数です。

あなたのプラグインファイルは、ワードプレス、定数の外部からアクセスされた場合ABSPATH、またはWPINC定義されないので、それはあなたのコードへの不正アクセスを防止し、プラグインのコードを終了します。

ABSPATHそして、WPINCとして、WordPressのコアで定義されています。

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

両方とも同じ目的で使用されます。


1

WPINCとABSPATHの違いは何ですか?

自分で確認できます。ちょうどwp-load.php GitHubの上のWordPressのミラーに。

一目見ただけで、現在選択されている答えが、どのようABSPATHに定義されているかに関して正しくないことがわかります。また、GitHubで異なるタグを比較すると、ABSPATH定義が時間とともに実際に変化することがわかります。

それを行うための「正しい」方法はどれですか?

これらがセキュリティに使用されることを考えると、私は行きたいと思いますABSPATHABSPATHWPブートストラップで最初に定義されるだけでなくWPINC、同じファイル内の条件の下で定義されるという理論的根拠は、結果として、将来の回帰を経験する可能性が高くなります。

また、明示的に尋ねられていませんが、との両方dieを使用して例を提供しましたexitdevdocs.io公式のAPIドキュメントに基づいているによると、とdie同等exitであるため、2つのうちのいずれかを選択でき、違いは生じません。

引数は両方dieともexit受け入れるため、異常終了時に暗号化されたバージョンタグや連絡先情報などの有用な情報を出力するために使用し0たり-1、さらに処理するために、またはさらに処理するために終了コードを渡すことを検討できます。

また、それwp_dieは注目に値することでもあります。PHPビルトインと混同しないでください。プレーンテキストに加えてHTMLを出力する際に​​使用するためにそれらを補完し、現在WordPressコア全体で自由に使用されています。学びの詳細wp_die WordPress.orgに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.