web-dev-qa-db-fra.com

Détecter quand un plugin est activé ou désactivé

J'ai un thème de démarrage que j'utilise pour la plupart des sites Web que j'ai construits moi-même. Étant donné que chaque site a des dépendances de plug-in différentes, j'essaie de créer un script qui rassemble essentiellement une liste de tous les plug-ins actuellement actifs et les stocke dans un fichier JSON.

Ensuite, je souhaite utiliser l'activation de TGM Plugin pour boucler cette liste et installer les plug-ins qui ne sont pas déjà présents.

Nous utilisons git pour héberger notre répertoire de thèmes. Lorsque nous transmettons les modifications, elles sont déployées automatiquement sur notre serveur de transfert. Le problème est que nous ne voulons pas avoir à nous connecter à FTP ou à exécuter des commandes WP-CLI pour installer les plugins manquants. Nous préférerions que les dépendances proviennent du thème lui-même pour installer les plugins automatiquement s'il nous en manque un sur notre hôte local.

Nous avons également un développeur très oublieux, sur lequel on ne peut pas compter pour ajouter le plugin manuellement au fichier TGM.

Donc, mon problème ici réside dans le fait que je n'arrive pas à trouver les crochets immédiatement appelés lors de l'activation ou de la désactivation d'un plugin, puis de recompiler la liste des plugins et de la cracher dans un fichier JSON à utiliser pour l'activation ou la désactivation. plugins de cette liste.

Toute aide à ce sujet serait très appréciée.

1
Steve North

Il y a peu de solutions. Vous pouvez utiliser les hooks activate_plugin et deactivate_plugin par exemple.

Mais ... Pour autant que je sache, vous souhaitez être averti chaque fois que la liste des plugins est modifiée et non lorsqu'un plugin est activé ou désactivé.

Donc, le moyen le plus simple sera de s’accrocher au update_option .

add_action('updated_option', function( $option_name, $old_value, $value ) {
    if ( 'active_plugins' == $option_name ) {
        // update your json file based on $value
    }
}, 10, 3);
3
Krzysiek Dróżdż