Cum pot apela o funcție dintr-un plugin în alt plugin?

30 iun. 2012, 21:01:36
Vizualizări: 30.1K
Voturi: 8

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ă.

1
Comentarii

De asemenea, ambele plugin-uri își declară funcțiile într-o clasă

Graham Graham
30 iun. 2012 21:14:12
Toate răspunsurile la întrebare 2
0
11

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.

19 aug. 2016 18:37:44
0

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.

19 aug. 2016 17:45:04