Answers:
if ( ! defined( 'WPINC' ) ) die;
并if ( ! defined( 'ABSPATH' ) ) exit;
防止直接访问您的插件文件,从而增加了一层安全保护。ABSPATH
是WordPress定义的PHP常量。
如果您的插件文件是从WordPress外部访问的,则常量ABSPATH
或WPINC
不会被定义,因此它会退出插件代码,从而防止未经授权的访问您的代码。
ABSPATH
并WPINC
在WordPress核心中定义为:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
两者均用于相同目的。
WPINC和ABSPATH有什么区别?
您可以检查一下自己。只需查看wp-load.php
GitHub上的WordPress镜像即可。
即使快速浏览一下,也会显示当前选择的答案ABSPATH
在定义方式上不再正确。而且,如果您在GitHub上比较不同的标签,您会看到ABSPATH
定义实际上随时间而变化。
哪一种是“正确”的方法?
鉴于这些用于安全性,我会去ABSPATH
。ABSPATH
不仅在WP引导程序中首先定义的基本原理,而且是WPINC
在同一文件中的条件下定义的,因此,更有可能经历将来的回归。
另外,虽然没有明确要求,但您同时使用die
和提供了示例exit
。根据devdocs.io
,使用了官方API文档die
的等效于exit
,因此您可以选择两者中的任何一个都不会造成任何影响。
双方die
并exit
接受参数,所以你可以如加密版本标签或联系信息,可以考虑使用他们输出一些有用的信息,在异常终止,或传递一个退出代码,如0
或-1
作进一步处理。
同样值得注意的是,这wp_die
也是一件事情。不要与PHP内置组件混淆,而是称赞它们可用于输出HTML和纯文本,并且目前在整个WordPress核心中广泛使用。在WordPress.org上了解更多信息wp_die
。
if ( ! defined( 'ABSPATH' ) ) exit;
...,但是,也许,请考虑一下此代码段的范围是确保将wordpress加载为“ WPINC”更好,因为它更倾向于wordpressfull并带有“ WP”。