我正在开发WordPress插件,但在此之前,我已经检查了已经开发的少数插件的代码。我看到了一种常见的方法,可以通过以下行限制插件开发人员直接启动插件代码的位置
// If accessed directly, abort
if ( ! defined( \'WPINC\' ) ) {
die;
}
这在插件索引文件中。我的问题是,当我们安装插件时,这是第一个要执行的文件,所以它之前定义在哪里,并且不会中止对该文件的执行?
最合适的回答,由SO网友:Charles 整理而成
问题1那么它在哪里定义呢?回答:
它在WordPress核心中定义。
这里有一个快速在线reference 或查看WordPress根目录中的以下文件以获取本地参考:wp-settings.php
. 在该文件中(第18行附近)显示以下代码:
define( \'WPINC\', \'wp-includes\' );
<问题2并且不会中止对文件的执行回答:
它的用途(也就是说,其目的是保护插件不被外部直接访问,preventing any unauthorized access 一些开发人员使用两种方法来实现此保护WPINC
和其他使用ABSPATH
如所示:
if (!defined(\'ABSPATH\')) exit;
(或更换exit
具有die("No cheating!")
或其他文本文件if ( ! defined( \'WPINC\' ) ) die;
(或使用exit
以与上述相同的方式)两者的定义如下:
define( \'ABSPATH\', dirname(dirname(__FILE__)) . \'/\' );
define( \'WPINC\', \'wp-includes\' );
dirname
(通用PHP)只需从完整路径返回目录
wp-includes
这是不言而喻的。您可以自由决定使用哪个。我个人认为没有真正正确的方法,两者都有相同的目的。我只使用ABSPATH
但这完全取决于你个人的喜好
只需记住将其直接添加到标题部分下方,或至少添加到插件顶部附近即可