Come posso chiamare una funzione da un plugin all'interno di un altro plugin?
Ho un plugin base nel pannello delle opzioni di amministrazione per gli eventi.
Voglio chiamare una funzione che proviene da un plugin diverso per i social media (Mingle). Posso chiamare le funzioni del plugin nel tema, ma non sembra possibile farlo nei file core di altri plugin o nei pannelli di amministrazione di altri plugin.
Ho provato a includere i file dell'altro plugin, aggiungere un hook al file functions del tema, utilizzare add_action
, add_filter
, init
ecc. Ma non so quale dovrebbe essere il primo argomento per queste azioni, dato che voglio inserire la funzione in una specifica pagina di amministrazione di un altro plugin.
L'unica soluzione che ha funzionato è stata quella di unire il codice dei due plugin, anche se sembra strano che non ci sia un metodo più semplice.
Potresti provare a chiamare le funzioni del tuo plugin utilizzando l'azione plugins_loaded
.
Plugin A
class PluginA {
public function func_a() {
// fai qualcosa
}
}
Plugin B
class PluginB {
function functB() {
if (class_exists('PluginA')) {
//fai qualcosa che dipende da PluginA
}
}
}
add_action('plugins_loaded', 'call_plugin_a_using_plugin_b');
function call_plugin_a_using_plugin_b() {
PluginB::functB();
}
Secondo il Codex, l'azione plugins_loaded
viene attivata dopo che tutti i plugin sono stati caricati, quindi assicurarsi che tutti i plugin siano caricati prima di chiamare una funzione da un altro plugin potrebbe essere la strada da percorrere.

Per chiamare una funzione da un plugin in un altro plugin (inception?), puoi provare con la seguente logica:
Puoi verificare se la funzione che desideri esiste prima di fare qualsiasi altra cosa.
Plugin A:
function from_plugin_alpha( some_thing ) {
// esegui operazioni
}
Plugin B:
function from_plugin_bravo() {
if ( !function_exists( 'from_plugin_alpha' ) ) {
return;
}
from_plugin_alpha( some_thing );
}
Questo controlla che la funzione esista prima di eseguire il tuo codice personalizzato.
