Как вызвать функцию из одного плагина внутри другого плагина?
У меня есть базовый плагин в панели администратора для событий.
Я хочу вызвать функцию из другого плагина для социальных сетей (Mingle). Я могу вызывать функции плагина в теме, но, похоже, не могу делать это внутри основных файлов других плагинов или в их административных панелях.
Я пробовал подключать файлы другого плагина, добавлять хук в файл functions.php темы, использовать add_action
, add_filter
, init
и т.д. Но я не знаю, каким должен быть первый аргумент для этих действий, так как я хочу вставить функцию на определенную административную страницу из другого плагина.
Единственное решение, которое сработало - это объединение кода двух плагинов, хотя кажется странным, что нет более простого метода.
Возможно, вам стоит попробовать вызывать функции вашего плагина с использованием действия plugins_loaded
.
Плагин A
class PluginA {
public function func_a() {
// выполнить действия
}
}
Плагин B
class PluginB {
function functB() {
if (class_exists('PluginA')) {
// выполнить действия, зависящие от PluginA
}
}
}
add_action('plugins_loaded', 'call_plugin_a_using_plugin_b');
function call_plugin_a_using_plugin_b() {
PluginB::functB();
}
Согласно Кодексу, действие plugins_loaded
срабатывает после загрузки всех плагинов, поэтому убедиться, что все плагины загружены перед вызовом функции из другого плагина, может быть правильным решением.

Чтобы вызвать функцию из одного плагина в другом плагине (инцепция?), можно попробовать следующий подход:
Перед выполнением каких-либо действий проверьте наличие нужной функции.
Плагин A:
function from_plugin_alpha( some_thing ) {
// выполняем действия
}
Плагин B:
function from_plugin_bravo() {
if ( !function_exists( 'from_plugin_alpha' ) ) {
return;
}
from_plugin_alpha( some_thing );
}
Этот код проверяет существование функции перед выполнением вашего пользовательского кода.
