Разработчики плагинов обычно защищают свои плагины от прямого доступа. Я видел два способа сделать это:
if ( ! defined( 'WPINC' ) ) die;
а также
if ( ! defined( 'ABSPATH' ) ) exit;
Каковы различия между WPINC и ABSPATH? Какой «правильный» способ сделать это?
plugins
php
plugin-development
Даниил
источник
источник
if ( ! defined( 'ABSPATH' ) ) exit;
... но, возможно, считает , что сфера применения этого кода является то, убедитесь , что WordPress загружен «WPINC» лучше , потому что больше wordpressfull смотрящую с «РГ».if ( ! defined( 'WPINC' ) ) die;
иif ( ! defined( 'ABSPATH' ) ) exit;
добавьте дополнительный уровень безопасности, предотвращая любой прямой доступ к вашему файлу плагина.ABSPATH
константа PHP, определенная WordPress в его ядреЕсли ваш файл плагина доступен из-за пределов WordPress, константа
ABSPATH
илиWPINC
не будет определена, поэтому она выходит из кода плагина, предотвращая любой несанкционированный доступ к вашему коду.ABSPATH
иWPINC
определены в ядре WordPress как:Оба используются для одной цели.
источник
Вы можете проверить себя. Просто посмотрите
wp-load.php
на зеркало WordPress на GitHub.Даже быстрый взгляд покажет, что выбранный в данный момент ответ больше не верен относительно того, как
ABSPATH
он определен. И если вы сравните различные теги на GitHub, вы увидите, чтоABSPATH
определение действительно меняется со временем.Учитывая, что они используются для безопасности, я бы пошел на
ABSPATH
. Обоснование заключается в том, чтоABSPATH
он не только определяется первым в загрузчике WP,WPINC
но определяется условным условием в том же файле и, как следствие, с большей вероятностью подвергнется будущей регрессии.Кроме того, хотя это и не было явно задано, вы предоставили примеры, использующие оба
die
иexit
. Согласноdevdocs.io
, который опирается на официальную документацию API,die
эквивалентенexit
, так что вы можете выбрать любой из двух, и это не будет иметь значения.И те,
die
и другиеexit
принимают аргументы, поэтому вы можете использовать их для вывода некоторой полезной информации, такой как зашифрованный тег версии или контактная информация, после завершения или передачи кода выхода, такого как0
или-1
для дальнейшей обработки.Также стоит отметить, что
wp_die
это тоже вещь. Не путать со встроенными модулями PHP, но дополняет их для использования при выводе HTML в дополнение к простому тексту и в настоящее время широко используется в ядре WordPress. Узнайте больше оwp_die
на WordPress.org.источник