Intereting Posts
Как создать комментарий для пользователей из разных доменов Сделайте первое изображение миниатюром сообщения, не устанавливая его как отображаемое изображение Установка виджета при активации плагина Как изменить код категорий категорий? наследование класса плагина. не может изменять переменную Пользовательский запрос по полю автора и мета В теме Woocommerce необходимо добавить пользовательскую внешнюю ссылку изменить ширину полноэкранного редактора как отлаживать модуль доставки / класс boostrap на wp-admin backend через установку плагина Отображение страниц Настройка экрана «Пользователи-пользователи» на основе роли Возможны ли шаблоны пользовательской таксономии? Отображение пользовательских таксономических терминов, отсортированных по родительской / дочерней иерархии? WordPress игнорирует LIMIT / posts_per_page, несмотря на то, что в wp_query

Прямой доступ к файлу плагина WordPress

Я разрабатываю плагин wordpress, но до этого я проверил код для уже разработанных плагинов. Я видел общий подход к ограничению прямой, где разработчик плагина запускает код плагина по следующей строке

// If accessed directly, abort if ( ! defined( 'WPINC' ) ) { die; } 

Это файл индекса плагина. Мой вопрос в том, когда мы устанавливаем плагин, это первый файл, который должен быть выполнен так, чтобы он был определен ранее, и он не отменяет выполнение в файле?

Вопрос 1. так, где он определен раньше
Ответ:

Он определен в ядре WordPress.

Здесь краткая онлайн- ссылка или локальная ссылка рассмотрим следующий файл в корневом каталоге WordPress: wp-settings.php . В этом файле ( около строки 18 ) отображается следующий код:

define( 'WPINC', 'wp-includes' );


Вопрос 2. и не отменяет выполнение в файле
Ответ:

Использование ( цель так сказать ) заключается в защите плагинов от прямого доступа
( снаружи, предотвращая любой несанкционированный доступ к вашему коду )
Два способа достижения этой защиты, некоторые разработчики используют WPINC а другие используют ABSPATH как в:

  • if (!defined('ABSPATH')) exit; (или заменить exit с помощью die("No cheating!") или другого txt)
  • if ( ! defined( 'WPINC' ) ) die; (или использовать exit же, как указано выше)

Оба определяются следующим образом:

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

dirname ( generic PHP ) просто возвращает каталог из полного пути.
wp-includes довольно понятно.


Вы можете решить, что использовать. Я лично считаю, что нет реального правильного пути , оба имеют ту же цель. Я использую только ABSPATH но все зависит от ваших личных предпочтений.
Не забудьте добавить его непосредственно под заголовком или, по крайней мере, рядом с верхней частью вашего плагина.

WPINC определяется WP перед загрузкой плагинов; поэтому тот факт, что он уже определен, указывает, что плагин загружается WP, а не прямым запросом.