web-dev-qa-db-fra.com

Comment Wordpress annule/désactive un plugin?

Wordpress utilise le modèle Observer pour son système de plug-in et vérifie si un plug-in est activé, analyse le répertoire des plug-ins et stocke tout dans un tableau de la classe de plug-ins.

Une fois qu'il a obtenu les plugins activés, il inclut ensuite les fichiers de script du plugin. Cependant, je suis curieux de savoir comment Wordpress dés-inclut les plugins quand ils sont désactivés dans l'admin? Si Wordpress inclut simplement le fichier via un include_once ou un require_once standard, comment Wordpress désactive-t-il un plugin et le dés-inclut-il?

C'est de ma compréhension que vous ne pouvez pas inclure et dés-inclure un fichier dans PHP (pas à ma connaissance). Quelqu'un peut-il m'indiquer des fichiers spécifiques contenant les plug-ins, ainsi que les fonctions appropriées et les fichiers où ils sont désactivés?

Si Wordpress stocke les plugins activés dans un tableau de plugins activés, incluez-les; comment Wordpress sait-il qu'il ne faut pas appeler une fonction à l'intérieur d'un plugin désactivé si elle est déjà incluse?

4
Dwayne Charrington

Les plugins actifs sont stockés dans l'option 'active_plugins', comme ceci:

array(
  'akismet/akismet.php',
  'hello-dolly.php',
);

À chaque chargement de page, WP parcourt simplement ce tableau et inclut ces fichiers. Il appartient à chaque plugin d'inclure tous les fichiers supplémentaires qu'il pourrait avoir.

Lorsqu'un plugin est désactivé, il est simplement supprimé de ce tableau. Lors du chargement de la page suivante, il ne sera plus inclus.

Pas de "décompression" requise.

8
scribu