В чем разница между WPINC и ABSPATH?
Для разработчиков плагинов обычной практикой является защита своих плагинов от прямого доступа. Я видел два способа сделать это:
if ( ! defined( 'WPINC' ) ) die;
и
if ( ! defined( 'ABSPATH' ) ) exit;
В чем разница между WPINC и ABSPATH? Какой из способов является 'правильным'?

Они определяются следующим образом:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname
— это функция PHP, которая возвращает путь родительской директории, а wp-includes
говорит само за себя.
Я бы сказал, что ABSPATH
лучше, потому что это одна из первых вещей, которые загружает WordPress, и выглядит она симпатичнее:) Но на самом деле нет какого-то одного "правильного способа", потому что оба варианта работают.

if ( ! defined( 'WPINC' ) ) die;
и if ( ! defined( 'ABSPATH' ) ) exit;
добавляют дополнительный уровень безопасности, предотвращая прямой доступ к файлу вашего плагина. ABSPATH
— это PHP-константа, определённая в ядре WordPress.
Если к файлу вашего плагина обращаются извне WordPress, константы ABSPATH
или WPINC
не будут определены, что приведёт к завершению выполнения кода плагина и предотвратит несанкционированный доступ к вашему коду.
ABSPATH
и WPINC
определены в ядре WordPress следующим образом:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
Оба варианта служат одной и той же цели.

В чем разница между WPINC и ABSPATH?
Вы можете проверить это самостоятельно. Просто взгляните на wp-load.php
в зеркале WordPress на GitHub.
Даже беглый взгляд покажет, что текущий выбранный ответ больше не корректен в том, как определяется ABSPATH
. И если вы сравните разные теги на GitHub, то увидите, что определение ABSPATH
фактически меняется со временем.
Какой способ является 'правильным'?
Учитывая, что эти константы используются для безопасности, я бы выбрал ABSPATH
. Обоснование в том, что ABSPATH
не только определяется первым в загрузчике WordPress, но и WPINC
определяется под условием в том же файле и, как следствие, более вероятно может столкнуться с регрессией в будущем.
Также, хотя это и не было явно спрошено, вы привели примеры с использованием и die
, и exit
. Согласно devdocs.io
, который опирается на официальную документацию API, die
эквивалентен exit
, так что вы можете выбрать любой из двух вариантов, и это не будет иметь значения.
И die
, и exit
принимают аргументы, поэтому вы можете использовать их для вывода полезной информации, например, зашифрованной версии тега или контактных данных, при аварийном завершении, или передать код завершения, такой как 0
или -1
, для дальнейшей обработки.
Также стоит отметить, что существует и wp_die
. Не путайте с встроенными функциями PHP, но он дополняет их для вывода HTML в дополнение к обычному тексту и активно используется в ядре WordPress в настоящее время. Узнайте больше о wp_die
на WordPress.org.

Также стоит отметить, что нет разницы между die
и exit
.
Смотрите: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

В текущем виде ваш ответ непонятен. Пожалуйста, [отредактируйте] его, чтобы добавить дополнительные детали, которые помогут другим понять, как это отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы, в [справочном центре].

Это не является ответом на вопрос. Когда у вас будет достаточно репутации, вы сможете комментировать любые сообщения; вместо этого предоставляйте ответы, не требующие уточнений от автора вопроса. - Из обзора
