Cum pot apela o funcție dintr-un plugin în alt plugin?
Am un plugin simplu în panoul de opțiuni de administrare pentru evenimente.
Vreau să apelez o funcție care provine dintr-un alt plugin pentru social media (Mingle). Pot apela funcțiile plugin-ului în temă, dar se pare că nu și în fișierele principale ale altor plugin-uri sau în panourile de administrare ale acestora.
Am încercat să includ fișierele celuilalt plugin, să adaug un hook în fișierul functions al temei, add_action
, add_filter
, init
etc. Dar nu știu care ar fi primul argument pentru acele acțiuni, deoarece vreau ca funcția să fie inserată într-o pagină specifică de administrare dintr-un alt plugin.
Singura soluție care a funcționat este combinarea codului celor două plugin-uri, deși pare ciudat că nu există o metodă mai simplă.
Poate ar trebui să încerci să apelezi funcțiile pluginului tău folosind acțiunea plugins_loaded
.
Plugin A
class PluginA {
public function func_a() {
// faci ceva
}
}
Plugin B
class PluginB {
function functB() {
if (class_exists('PluginA')) {
//faci ceva ce depinde de PluginA
}
}
}
add_action('plugins_loaded', 'call_plugin_a_using_plugin_b');
function call_plugin_a_using_plugin_b() {
PluginB::functB();
}
Conform Codex, acțiunea plugins_loaded
se declanșează după ce toate pluginurile sunt încărcate, așa că asigurându-te că toate pluginurile sunt încărcate înainte de a apela o funcție din alt plugin ar putea fi soluția.

Pentru a apela o funcție dintr-un plugin în alt plugin (inception?), poți încerca următoarea logică:
Poți încerca verificând dacă funcția pe care o dorești există înainte de a face orice altceva.
Plugin A:
function from_plugin_alpha( some_thing ) {
// faci ceva
}
Plugin B:
function from_plugin_bravo() {
if ( !function_exists( 'from_plugin_alpha' ) ) {
return;
}
from_plugin_alpha( some_thing );
}
Aceasta verifică dacă funcția există înainte de a executa codul personalizat.
