Extensions indispensables (mu-plugins)

Les extensions indispensables (en anglais « mu-plugins » pour « Must-Use Plugins ») sont des extensions installées dans un répertoire /mu-plugins spécifique au sein du répertoire /wp-content, et qui sont activées automatiquement sur chaque site lorsque le script de chargement de WordPress est lancé (à chaque visite sur le site donc). Les extensions indispensables ne s’affichent pas dans la liste générale des extensions mais en cliquant sur le filtre « Extensions indispensables » en haut de page de l’écran de gestion des extensions. Elles ne peuvent être désactivées autrement qu’en supprimant le fichier dans le répertoire des extensions indispensables, qui par défaut est situé dans /wp-content/mu-plugins.

Pour changer le répertoire par défaut manuellement, définissez les constantes WPMU_PLUGIN_DIR et WPMU_PLUGIN_URL dans le fichier wp-config.php.

Fonctionnalités des extensions indispensables

  • Elles sont toujours activées, il n’y a pas besoin de les activer via l’administration et les utilisatrices et utilisateurs ne peuvent pas les désactiver, même par accident.
  • Elles peuvent être activées simplement en téléversant le fichier de l’extension dans le répertoire /mu-plugins, sans avoir besoin de se connecter sur l’interface d’administration.
  • Elles sont chargées via PHP dans l’ordre alphabétique et avant les extensions normales, ce qui signifie qu’un crochet API ajouté dans une extension indispensable s’applique avant toutes les autres extensions qui utiliseraient le même crochet.

Haut ↑

Avertissements

Malgré leur utilité dans de nombreux cas spécifiques, le système d’extension indispensable n’est pas toujours idéal et comporte plusieurs aspects négatifs qui le rendent inapproprié dans certaines circonstances. Voici quelques réserves à garder en tête avant d’utiliser les fonctionnalités proposées par le système des extensions indispensables :

  • Les extensions du répertoire des extensions indispensables n’apparaîtront pas sur le système de notification de mise à jour disponible et n’indiqueront jamais si une mise à jour est disponible. Vous êtes responsable de leur mise à jour manuelle.
  • Les crochets d’activations ne sont pas exécutés dans les extensions indispensables. Ces crochets sont utilisés par de nombreuses extensions pour exécuter du code lors de l’installation ou de la désinstallation d’une extension. Les extensions qui dépendent de ces crochets pourraient ne pas fonctionner une fois placées dans le répertoire /mu-plugins.
  • WordPress n’exécute que les fichiers PHP directement contenus à la racine du répertoire mu-plugins, les sous-répertoires ne sont pas parcourus. Si vous souhaitez placer votre extension indispensable dans un sous-répertoire, vous devrez créer un proxy de chargement via PHP dans le répertoire /mu-plugins :
<?php // Exemple de fichier mu-plugins/load.php
require WPMU_PLUGIN_DIR . '/my-plugin/my-plugin.php';

Haut ↑

Un peu d’histoire ! L’origine du terme « mu-plugin »

À l’origine, le répertoire /mu-plugins a été implémenté par WPMU (WordPress Multi-User) pour offrir aux administratrices et administrateurs une façon simple d’activer des extensions sur tous les sites d’un réseau de sites. C’est un besoin important car à cette époque, le code de WordPress Multi-User n’offrait aucun moyen pour faire cela (aujourd’hui, WordPress Multi-site le permet depuis l’administration).

Le code qui gère le fonctionnement du répertoire /mu-plugins a été fusionné dans le code source de WordPress le 7 mars 2009 dans ce jeu de modifications 10 mois avant que la base de code de WPMU fut initiallement fusionnée avec de code de WordPress. Tous les sites ont alors pu utiliser les fonctionnalités associées aux extensions indispensables, qu’il avait une installation multi-site ou non. La fonctionnalité est utile pour tous les types d’installations WordPress, indépendamment de leur contexte.

Dans le cadre de ce processus d’intégration au cœur WordPress, il faut bien avouer que le nom « mu-plugin » était bien mal nommé, car il véhiculait l’idée erronée que cela ne s’appliquait que dans le cadre d’un multi-site du fait de la présence du suffixe « mu- ». Malgré tout, ce suffixe fut conservé et réinterprété en tant que « must-use plugin » (devenu extension indispensable en français). Ce sont donc des extensions qui seront toujours chargées quelque soient les réglages de l’administration.

Le « mu » de « Must-Use » est donc un rétro-acronyme, tout comme PHP (qui voulait au départ dire « Personal Home Page » mais qui fut plus tard réinterprété comme signifiant « PHP Hypertext Preprocessor », et qui est par ailleurs également un acronyme récursif). 🤓

Haut ↑

Code source

Traduit par Jb Audras
Relu par Didier Demory, Sébastien Serre & Jenny Dupuy
Dernière mise à jour le 4 mars 2020