Таким образом, в принципе, если ваш плагин представляет собой один php-файл, все функции и логика, включенные в файл, будут доступны для остальной части приложения после установки и активации плагина.
Однако большинство плагинов не спроектированы таким образом. имя файла плагина , которое действует как точка входа в ваш плагин, обычно загружает остальные файлы в каталоге плагинов, просто включая их или вызывая классы и функции на основе событий, происходящих на сайте через крючки .
Итак, если вы хотите, чтобы только ваш плагин мог иметь доступ к своим собственным файлам, вы можете сделать несколько вещей.
Прежде всего, добавьте defined('ABSPATH') or die();
вверху основного плагина.файл.Как писал пользователь Ifty, «ABSPATH
- это константа, определенная в строке 86 wp-config.php. Когда wordpress попытается запустить ваш плагин, будет определена константа ABSPATH
. Но если кто-то еще попытается выполнить ваш файл плагиновнапрямую, ABSPATH
не будет определен, и в этом случае ваш скрипт не будет выполнен. "
Таким образом, это защищает ваш файл от прямого доступа вне контекста Wordpress.
Для защитыФайлы вашего плагина с остальной части самого сайта, просто оберните любой оператор или код include
или require_once
в ваш основной файл плагина в функцию или класс, который вызывается только на основании заданных вами условий.Например,
<?php
/*
Plugin Name: Example plugin
Plugin URI: http://stackoverflow.com/
Version: 1.0
*/
defined('ABSPATH') or die();
add_action('your-custom-action', 'protector_function');
function protector_function(){
if ( current_user_can('manage_options') ) { //checks if user is admin you can use whichever conditions you want here
require_once plugin_dir_path( __FILE__ ) . 'filename-with-plugin-code.php';
// any other plugin code here
}
}
Вы можете определить свое собственное действие и вызвать его, используя do_action()
( reference ), чтобы гарантировать, что ваш код плагина вызывается только там, где вы указали в течениеapplication.
Плагины Wordpress существуют для расширения функциональности Wordpress, поэтому, если вы вообще не хотите, чтобы ваш код был доступен из Wordpress, я не уверен, что плагин является правильным решением.
Надеюсь, это поможет!