Intereting Posts
URL-адрес страницы для шаблона страницы Разрешить вход в систему пользователям, которые не принадлежат к whitelisted ips Как отображать отдельные сообщения из цикла пользовательских сообщений? Показать теги пользовательского типа сообщения за пределами цикла не может обновлять учетные данные ftp, даже если у владельца группы есть доступ на запись Как получить значение, хранящееся в многомерном массиве, и SUM записи? Есть ли плагин для упрощения прикрепления изображений? Добавить разбивку на страницы на страницу search.php Постоянная ссылка независимо от имени сообщения, хранящегося в базе данных Название продукта Woocommerce Запрос пользовательского типа сообщения по таксономии Отсортировать все сообщения по названию категории в панели администратора? Как я могу запросить часть года полной даты в пользовательском поле? Удалить ссылку меню «Тема» из панели администратора Какой плагин позволит мне перенаправить 404 ошибки на определенную страницу?

Прямой доступ к файлу плагина 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, а не прямым запросом.