¿Cómo puedo llamar a una función de un plugin desde otro plugin?
Tengo un plugin básico en el panel de opciones de administración para eventos.
Quiero llamar a una función que pertenece a un plugin diferente de redes sociales (Mingle). Puedo llamar a las funciones del plugin en el tema, pero no dentro de los archivos principales de otros plugins, o en los paneles de administración de otros plugins aparentemente.
He intentado incluir los archivos del otro plugin, agregar un hook al archivo functions del tema, add_action
, add_filter
, init
etc. Pero no sé cuál debería ser el primer argumento para esas acciones, ya que quiero insertar la función en una página específica de administración de otro plugin.
La única solución que ha funcionado es fusionar el código de los dos plugins, aunque parece extraño que no haya un método más simple.
Quizás deberías intentar llamar a las funciones de tu plugin usando la acción plugins_loaded
.
Plugin A
class PluginA {
public function func_a() {
// hacer algo
}
}
Plugin B
class PluginB {
function functB() {
if (class_exists('PluginA')) {
//hacer algo que depende de PluginA
}
}
}
add_action('plugins_loaded', 'call_plugin_a_using_plugin_b');
function call_plugin_a_using_plugin_b() {
PluginB::functB();
}
Según el Codex, la acción plugins_loaded
se ejecuta después de que todos los plugins estén cargados, por lo que asegurarse de que todos los plugins estén cargados antes de llamar a una función de otro plugin podría ser la solución.

Para llamar a una función de un plugin desde otro plugin (¿inception?), puedes probar con la siguiente lógica:
Puedes intentar verificando si la función que necesitas existe antes de hacer cualquier otra cosa.
Plugin A:
function from_plugin_alpha( some_thing ) {
// hacer algo
}
Plugin B:
function from_plugin_bravo() {
if ( !function_exists( 'from_plugin_alpha' ) ) {
return;
}
from_plugin_alpha( some_thing );
}
Esto verifica que la función exista antes de ejecutar tu código personalizado.
