Как подключить PHP-файл одного плагина к файлу functions другого плагина

22 авг. 2012 г., 11:56:58
Просмотры: 22.8K
Голосов: 9

Мне нужно настроить вывод шорткода плагина A, используя функцию плагина B. Поэтому я изменяю функцию шорткода плагина A, добавляя условие для проверки значения функции плагина B, но мне нужно подключить PHP-файл, который поддерживает эту функцию. Я пробовал все варианты: require_once, require и include, но получаю следующие ошибки:

При использовании require_once('../../pluginname/pluginfunctions.php');

Ошибка Warning: require_once(): open_basedir restriction in effect. File(../../magicmembers/core/libs/functions/mgm_misc_functions.php) is not within the allowed path(s)

При использовании include(WP_PLUGIN_URL . '/pluginname/pluginfunctions.php');

Ошибка Warning: include(): URL file-access is disabled in the server configuration

Какой правильный способ?

0
Все ответы на вопрос 3
2

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

require_once ABSPATH . '/wp-content/plugins/pluginname/pluginfunctions.php';

но я не уверен, что это сработает.

При втором включении вы пытаетесь загрузить файл по URL, что отключено на сервере по соображениям безопасности.

Однако, зачем вам включать функцию из плагина B? Если плагин B установлен, значит он, скорее всего, активен, и вы можете использовать его функцию напрямую из плагина A без необходимости отдельного подключения файла.

22 авг. 2012 г. 12:10:03
Комментарии

Эй, спасибо за ответ! Возможно, это единственный метод, который я не тестировал, и он работает! Не совсем понимаю, почему функция не работала без подключения файла, который её поддерживает. Может быть, плагин B ещё не загружен, когда плагин A требует его файл? В любом случае, спасибо за помощь!

vadims vadims
22 авг. 2012 г. 13:29:06

Вам следует использовать require_once WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . 'plugin-name' и т.д., поскольку директория wp-content может быть переименована.

Keith Mifsud Keith Mifsud
24 июл. 2020 г. 15:29:01
0

The right function to use is: plugin_dir_path();

Example:

include_once plugin_dir_path( __FILE__ ).'plugin-functions.php';
8 июн. 2016 г. 23:39:28
1
-2

Если вам лень, вы также можете сделать так:

require_once( ABSPATH . PLUGINDIR .'/pluginname/pluginfunctions.php' );

Этот способ помогает, если вы предпочитаете короткие строки кода, но по сути не сильно отличается от ответа pbd.

8 июн. 2016 г. 23:03:31
Комментарии

Пожалуйста… используйте правильную функцию: plugin_dir_path() вместо жесткого кодирования констант, которые не предназначены для использования темами и плагинами.

kaiser kaiser
8 июн. 2016 г. 23:36:41