Créer un plugin avec des dépendances

21

J'essaie d'étendre les fonctionnalités d'un autre plugin. J'ai besoin d'en récupérer les données dans un tableau pour les utiliser d'une manière différente du plugin d'origine. (Dans ce cas, les plugins WPMUDev Catégories et Listes). Y a-t-il quelque chose dans le Codex? Comment puis-je créer un plugin qui peut utiliser d'autres fonctions de plugins? Puis-je les étendre et construire les fonctions des nœuds parents? Je ne sais pas si ces plugins utilisent des classes ou simplement des fonctions directes.

J'essaie simplement d'obtenir les données du plugin dans un widget de la barre latérale (dans un élément d'option de formulaire), mais finalement je vais également l'utiliser pour la zone de contenu en utilisant des shortcodes personnalisés. Pour l'instant, j'ai juste besoin d'un endroit pour commencer.

DWils
la source
4
FWIW il y a un ticket de piste sur ce même sujet core.trac.wordpress.org/ticket/22316
Norcross

Réponses:

22

Oui, il est possible de créer un plugin qui étend un autre plugin. Voici quelques idées sur la façon de procéder:

  1. Un plugin peut configurer sa propre action et filtrer les crochets (en utilisant les fonctions do_actionet apply_filter) tout comme le noyau WordPress. Si le plugin que vous ciblez fait cela, vous pouvez utiliser ces crochets pour modifier les fonctionnalités.

  2. Si un plugin utilise une structure orientée objet, vous pouvez étendre les classes et construire sur le plugin d'origine.

  3. Vous pouvez lire les données stockées dans la base de données par le plugin d'origine et les utiliser dans votre code de plugin.

  4. Vous pouvez appeler n'importe quelle fonction du plugin d'origine que vous aimez, après avoir vérifié que le plugin est actif et chargé (voir ci-dessous). Soyez juste conscient des effets que la fonction pourrait avoir en plus de la valeur renvoyée.

Vous devrez vérifier si ce plugin d'origine est activé ou non. Vous pouvez utiliser la is_plugin_activefonction; cependant, cela ne fonctionne que sur les pages d'administration. Alternativement, vous pouvez utiliser function_existsou class_existspour vérifier si une fonction ou une classe particulière du plug-in d'origine est disponible, ce qui vous indiquerait qu'elle est en cours d'exécution.

N'oubliez pas que chaque fois que le plugin d'origine est mis à jour, vous devez tester votre plugin avec la nouvelle version pour rechercher tout nouveau qui pourrait entrer en conflit avec votre plugin.

Ben Miller - Rétablir Monica
la source