Je construis un plugin qui ajoute des fonctionnalités supplémentaires à un plugin principal. Idéalement, dans l'écran d'administration des plugins, le lien "activer" doit être désactivé et une note en ligne doit être ajoutée pour indiquer à l'utilisateur d'installer et d'activer le plugin principal avant de pouvoir utiliser le plugin actuel.
plugin-development
kosinix
la source
la source
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Réponses:
Merci pour les réponses les gars. Bien que les deux réponses m'aient mis sur la bonne voie, aucune n'a fonctionné hors de la boîte. Je partage donc mes solutions ci-dessous.
Méthode 1 - Utilisation de register_activation_hook:
Créez le plugin parent dans plugins / parent-plugin / parent-plugin.php:
Créez le plugin enfant dans plugins / child-plugin / child-plugin.php:
Notez que je n'utilise pas
deactivate_plugins( $plugin );
car pour une raison quelconque, cela ne fonctionne pas. J'ai donc utilisé wp_die pour annuler la redirection d'activation et informer l'utilisateur.Avantage:
Désavantages:
Méthode 2 - Utilisation de admin_init et admin_notices
Créez le plugin parent dans plugins / parent-plugin / parent-plugin.php:
Créez le plugin enfant dans plugins / child-plugin / child-plugin.php:
Avantage:
Désavantage:
Quant à ma question concernant la désactivation du lien d'activation, je pourrais utiliser:
Cependant, il s'est avéré très peu pratique car il n'y a PAS de place pour mettre ce code. Je ne pouvais pas le mettre sur le plugin parent car le plugin parent devrait être actif pour que ce code s'exécute. N'appartient certainement pas au plugin enfant ou à functions.php. Donc, je supprime cette idée.
la source
Essayez ceci, il est commenté, ce qui devrait vous aider à le comprendre.
Si cela génère une erreur, vous pouvez également vérifier l '«option» de «myplugin» et la définir sur false ou non activée.
la source
Les deux solutions suggérées ont des défauts.
Méthode 1: Comme mentionné, l'écran wp_die () s'affiche TOUJOURS lorsque le plug-in parent et le plug-in enfant sont activés en même temps en utilisant les cases à cocher dans l'écran d'administration des plug-ins.
Méthode 2: dans certains cas d'utilisation, ce n'est pas bon car 'admin_init' est exécuté bien après 'plugins_loaded' ( https://codex.wordpress.org/Plugin_API/Action_Reference ), et après le crochet de désinstallation ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Ainsi, par exemple, si nous voulons que le module complémentaire exécute du code lors de la désinstallation, que le plug-in parent soit actif ou non, cette approche ne fonctionnera PAS.
Solution:
Tout d'abord, nous devons ajouter le code suivant à la fin du fichier PHP principal du plugin parent:
Cela enverra un événement / signal à tous les abonnés, indiquant que le plugin principal a été chargé.
Ensuite, la classe du module complémentaire devrait ressembler à ceci:
J'espère que ça aide :)
la source
Je pense que vous avez besoin de l' activation du plugin TGM .
la source