muplugins_loaded : Le hook de la semaine n°16
De quoi ?
muplugins_loaded
, rien à voir avec « mu » comme « WordPress MU », mort en 2010 pour devenir « WordPress MultiSite », nonon. C’est le « MU » de « Must Use« . Pour rappel, ces plugins se trouvent par défaut dans /wp-content/mu-plugins/
, dossier à créer si vous ne l’avez pas encore, les fichiers .php sont automatiquement chargés, qu’ils contiennent une entête de plugin correcte ou pas.
Mais quand ?
C’est un hook qui est obligatoirement utilisé dans un mu-plugin car il est déclenché avant les plugins (ceux à activer), et avant le fichier functions.php
du thème. Donc forcément, vous devez l’utiliser dans ces plugins auto chargés.
Et pourquoi ?
Pourquoi l’utiliser ? Quelles utilisations pourraient-on faire avec ce hook et dans ce cas pourquoi ne pas le faire directement avec un plugin sur le hook plugins_loaded
qui est son collègue. Et bien justement, pour empêcher un plugin de se charger par exemple !
Et comment ?
Je vais devoir utiliser 2 hooks en fait, mais l’intérêt de la démo réside bel et bien dans l’utilisation du premier, celui de cet article : muplugins_loaded
. Le second sera option_
qui est assez proche de pre_option_ à la différence qu’avec lui on peut d’abord lire la vraie option avant d’intervenir dessus, là où pre_option_
intervient avant la lecture et l’empêche par la suite. bref.
Une démo !
Mon exemple est donc d’empêcher le chargement de plugins particuliers, selon une condition. Ce sera « si je suis sur la page de login, je ne charge pas tel ou tel plugin ». Je vais pour mon cas ne pas charger les plugins « WP Rocket » et « Hello Dolly » si nous sommes sur la page wp-login.php
.
Lors de muplugins_loaded
je vérifie si je suis sur la page de login. J’aurais voulu utiliser la variable globale $pagenow
mais elle n’est déclarée qu’un peu plus tard, donc je le fais avec $_SERVER[‘SCRIPT_NAME’]
.
Si je suis sur cette page, alors j’ajoute mon second hook option_active_plugins
qui est donc le hook option_
sur l’option des plugins actifs : active_plugins !
J’ai donc dans ma deuxième fonction les plugins qui sont prêts à être chargés, je vais simplement retirer les plugin qui m’interesses.
That’s all folks
C’est tout ! Maintenant si je suis sur la page de login, je ne charge plus ces plugins !
Envie de l’utiliser ?
Réagir à cet article