web-dev-qa-db-fra.com

Comment puis-je appeler une fonction d'un plugin dans un autre plugin?

J'ai un plugin de base dans le panneau d'options d'administration pour les événements.

Je souhaite appeler une fonction provenant d’un autre plug-in de réseau social ( Mingle ). Je peux appeler les fonctions de plug-in dans le thème, mais pas dans les fichiers de base d'autres plug-ins, ni dans les panneaux d'administration d'autres plug-ins, semble-t-il.

J'ai essayé d'inclure les fichiers de l'autre plugin, d'ajouter un crochet au fichier de fonctions de thème, add_action, add_filter, init etc. Mais je ne sais pas quel serait le premier argument de ces actions, car je veux que la fonction soit insérée dans un administrateur spécifique page d'un autre plugin.

La seule solution qui a fonctionné est la fusion du code des deux plugins, bien qu'il semble étrange qu'il n'y ait pas de méthode plus simple.

6
Graham

Peut-être devriez-vous essayer d'appeler les fonctions de votre plugin en utilisant l'action plugins_loaded.

Plugin A

class PluginA {
  public function func_a() {
    // do stuff
  }
}

Plugin B

class PluginB {
  function functB() {
    if (class_exists('PluginA')) {
      //do stuff that depends of PluginA
    }
  }
}

add_action('plugins_loaded', 'call_plugin_a_using_plugin_b');
function call_plugin_a_using_plugin_b() {
  PluginB::functB();
}

Selon le Codex , l'action plugins_loaded est déclenchée après le chargement de tous les plugins. Assurez-vous donc que tous les plugins sont chargés avant d'appeler une fonction à partir d'un autre plugin.

7
noquierouser

Pour appeler une fonction d'un plugin dans un autre plugin (création?), Vous pouvez essayer le login suivant:

Vous pouvez essayer en vérifiant la fonction que vous voulez avant de faire autre chose.

Plugin A:

function from_plugin_alpha( some_thing ) {
    // do stuff
}

Plugin B:

function from_plugin_bravo() {
    if ( !function_exists( 'from_plugin_alpha' ) ) {
        return;
    }
    from_plugin_alpha( some_thing );
}

Cela vérifie que cette fonction existe avant d'exécuter votre code personnalisé.

2