Les MU Plugins (Must-Use Plugins) sont des extensions WordPress chargées automatiquement, impossibles à désactiver depuis l'admin. Idéal pour protéger vos snippets lors d'un changement de thème. Créez le dossier /wp-content/mu-plugins/, déposez-y un fichier PHP, c'est actif. Pas de clic, pas d'activation — c'est automatique.
Pas le temps ? Faites-le analyser par l'IA
Dans nos thèmes, très souvent, on ajoute des extraits de code (snippets) dans le fichier functions.php. Ça fonctionne. Mais que se passe-t-il quand on change de thème ? Quand on passe à un thème enfant ? Ou quand on veut réutiliser ses snippets sur d'autres installations WordPress ?
Tout est perdu. Sauf si vous utilisez les Must-Use Plugins.

Qu'est-ce qu'un MU Plugin ?
Un MU Plugin (Must-Use Plugin), c'est une extension WordPress installée dans un répertoire spécifique (/wp-content/mu-plugins/) et activée automatiquement sur votre site. Pas besoin de cliquer sur " Activer " dans l'admin. Le fichier est là ? Il tourne.
Attention à ne pas confondre MU avec Multi-Utilisateurs. Ici, MU signifie " Must-Use ", autrement dit " doit être utilisé ". Dans la version française de WordPress, on les appelle Extensions indispensables.
Les MU Plugins ne s'affichent pas dans la liste générale des extensions. Pour les voir, cliquez sur le filtre " Extensions indispensables " en haut de la page Extensions. Et pour les désactiver, une seule méthode : supprimer le fichier PHP via FTP.

À quoi sert un MU Plugin WordPress ?
Un MU Plugin répond à un vrai problème : vous avez du code que vous ne voulez jamais perdre. Custom Post Types, Taxonomies, shortcodes, redirections, personnalisations d'admin, filtres de sécurité… tout ce qui encombre votre functions.php et qui disparaît au moindre changement de thème.
Avec un MU Plugin, votre code survit à n'importe quel changement. Thème, mise à jour, migration — tout est protégé.
Concrètement, voilà ce que j'y mets sur mes sites et ceux de mes clients :
- Des snippets de sécurité (désactiver XML-RPC, masquer la version WP, forcer HTTPS)
- Des Custom Post Types et Taxonomies personnalisées
- Des filtres de performance (désactiver les emojis, supprimer les query strings)
- Des redirections et règles métier spécifiques au projet
- Un formulaire de contact léger (pas besoin d'un plugin de 2 Mo pour ça)
Sur wpformation.com, j'utilise 8 MU Plugins qui gèrent l'optimisation des performances, le formulaire de contact, la sécurité, les données structurées FAQ et la revalidation du cache. Zéro plugin lourd pour ces fonctions.
Les avantages d'un MU Plugin
Pourquoi j'utilise les MU Plugins plutôt que de tout coller dans functions.php ? Plusieurs raisons :
- Toujours actif — pas besoin de l'activer manuellement, et personne ne peut le désactiver par erreur depuis l'admin
- Chargé avant tout le reste — WordPress exécute les MU Plugins en premier, avant les plugins classiques et même avant certaines fonctions du core
- Indépendant du thème — changez de thème, votre code reste. C'est le gros avantage par rapport à functions.php
- Déploiement simple — uploadez le fichier PHP dans
/mu-plugins/, c'est actif. Pas besoin de se connecter à l'admin
Vous conservez ainsi vos précieux snippets même quand vous changez de thème. Votre client ne peut pas les désactiver ni les supprimer depuis le tableau de bord. Et cette extension peut servir de base pour toutes vos installations — à chaque nouveau site, il suffit de copier le dossier /mu-plugins/.
Les inconvénients à connaître
Les MU Plugins ne sont pas parfaits. Voici ce qu'il faut savoir avant de les utiliser :
- Pas de mises à jour automatiques — aucune notification dans le tableau de bord. C'est à vous de maintenir votre code
- Les hooks d'activation ne fonctionnent pas — les fonctions register_activation_hook() et register_deactivation_hook() sont ignorées. Si un plugin en dépend pour s'initialiser, il ne marchera pas en tant que MU Plugin
- Pas de sous-répertoires par défaut — WordPress ne lit que les fichiers PHP à la racine de
/mu-plugins/. Si vous organisez votre code en sous-dossiers, il faut créer un fichier de chargement
Pour charger un MU Plugin organisé en sous-dossier, créez un fichier load.php à la racine :
<?php // mu-plugins/load.php
require WPMU_PLUGIN_DIR . '/mon-plugin/mon-plugin.php';
require WPMU_PLUGIN_DIR . '/autre-plugin/autre-plugin.php';
L'absence de notifications et l'exécution à chaque chargement de page font que ce n'est pas une bonne idée d'y mettre vos extensions habituelles. Les MU Plugins sont faits pour du code léger et spécifique, pas pour remplacer WooCommerce ou Yoast.

Comment créer un MU Plugin
En trois étapes :
- Via FTP ou votre gestionnaire de fichiers, créez le répertoire
/wp-content/mu-plugins/s'il n'existe pas - Créez un fichier PHP (nommez-le comme vous voulez). Son chemin sera :
/wp-content/mu-plugins/mon-fichier.php - Ajoutez votre code, sauvegardez, uploadez. C'est actif immédiatement
Pensez à toujours commenter votre code avec un en-tête clair. Pas obligatoire techniquement, mais vous vous remercierez dans 6 mois.
7 exemples de MU Plugins prêts à l'emploi
Voici des MU Plugins que j'utilise régulièrement. Copiez-collez, adaptez, c'est fait.
1. Supprimer les accents des noms de fichiers
Les navigateurs (surtout Safari) gèrent mal les fichiers avec accents. Ce snippet règle le problème définitivement :
<?php
/*
Plugin Name: Supprimer accents fichiers
Description: Nettoie les accents des noms de fichiers uploades
Version: 1.0
*/
add_filter( 'sanitize_file_name', 'remove_accents' );
2. Désactiver les emojis WordPress
WordPress charge un script JavaScript et une feuille CSS pour les emojis. Sur la plupart des sites, c'est inutile :
<?php
/*
Plugin Name: Desactiver emojis
Description: Supprime le chargement des emojis WP
*/
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
add_filter( 'emoji_svg_url', '__return_false' );
3. Masquer la version de WordPress
Par défaut, WordPress affiche son numéro de version dans le code source. C'est une info utile pour les attaquants :
<?php
/*
Plugin Name: Masquer version WP
Description: Supprime le numero de version du head et des flux RSS
*/
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );
4. Désactiver XML-RPC
XML-RPC est une vieille interface WordPress encore active par défaut. C'est une porte d'entrée classique pour les attaques brute force :
<?php
/*
Plugin Name: Desactiver XML-RPC
Description: Bloque toutes les requetes XML-RPC
*/
add_filter( 'xmlrpc_enabled', '__return_false' );
add_filter( 'wp_headers', function( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
});
5. Forcer HTTPS partout
Si votre site a un certificat SSL (et il devrait), ce snippet force toutes les URLs en HTTPS :
<?php
/*
Plugin Name: Forcer HTTPS
Description: Redirige tout le trafic vers HTTPS
*/
if ( ! is_ssl() ) {
add_action( 'template_redirect', function() {
wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
exit;
});
}
6. Personnaliser la page de login
Le logo WordPress sur la page de connexion, c'est sympa, mais pas très pro pour un client :
<?php
/*
Plugin Name: Personnaliser login
Description: Logo et lien personnalises sur la page de connexion
*/
add_action( 'login_enqueue_scripts', function() {
echo '<style>
.login h1 a {
background-image: url(' . home_url( '/wp-content/uploads/votre-logo.png' ) . ') !important;
background-size: contain !important;
width: 200px !important;
}
</style>';
});
add_filter( 'login_headerurl', function() { return home_url(); } );
7. Désactiver les révisions excessives
WordPress stocke chaque version de vos articles. Sur un gros site, ça gonfle la base de données. Limitez à 5 révisions :
<?php
/*
Plugin Name: Limiter revisions
Description: Limite les revisions a 5 par article
*/
if ( ! defined( 'WP_POST_REVISIONS' ) ) {
define( 'WP_POST_REVISIONS', 5 );
}
Pour plus de snippets, consultez notre article 100 Snippets WordPress — tous compatibles en tant que MU Plugins.
MU Plugin vs functions.php vs plugin classique
La question revient souvent : où mettre mon code ? Voici un comparatif clair :
| Critère | MU Plugin | functions.php | Plugin classique |
|---|---|---|---|
| Survit au changement de thème | Oui | Non | Oui |
| Désactivable depuis l'admin | Non | Non | Oui |
| Mises à jour automatiques | Non | Non | Oui |
| Chargé en premier | Oui | Après les plugins | Après MU Plugins |
| Idéal pour | Snippets permanents | Personnalisations liées au thème | Fonctionnalités complètes |
Mon conseil : mettez dans functions.php ce qui est spécifique à votre thème (styles, menus, sidebars). Mettez en MU Plugin tout ce qui doit survivre à un changement de thème. Et gardez les plugins classiques pour les fonctionnalités complexes qui nécessitent des mises à jour régulières.
MU Plugins et WP-CLI
Si vous utilisez WP-CLI (l'interface en ligne de commande de WordPress), vous pouvez gérer vos MU Plugins directement depuis le terminal :
# Lister les MU Plugins actifs
wp plugin list --status=must-use
# Verifier si le dossier mu-plugins existe
ls -la wp-content/mu-plugins/
# Copier un MU Plugin depuis un autre site
scp user@serveur:/chemin/wp-content/mu-plugins/securite.php ./wp-content/mu-plugins/
WP-CLI ne propose pas de commande wp plugin activate pour les MU Plugins — logique, ils sont activés automatiquement. Il suffit de placer le fichier au bon endroit.
Quels hébergeurs utilisent des MU Plugins ?
Beaucoup d'hébergeurs WordPress managés installent leurs propres MU Plugins pour intégrer leurs fonctionnalités :
- Kinsta — installe un MU Plugin pour le cache serveur et les analytics
- WP Engine — utilise un MU Plugin pour le CDN, le cache et la sécurité
- Pantheon — recommande des MU Plugins pour les filtres spécifiques à leur infrastructure
- WordPress.com (plans Business+) — utilise des MU Plugins pour le multisite
Si vous êtes chez un hébergeur classique comme o2switch, le dossier /mu-plugins/ n'existe pas par défaut. Créez-le vous-même et c'est parti.
Sécurité et bonnes pratiques
Les MU Plugins sont puissants. C'est aussi pour ça qu'il faut être prudent.
Un MU Plugin malveillant est indétectable depuis le tableau de bord WordPress. Il ne peut pas être désactivé sans accès FTP. C'est le vecteur préféré de certains malwares WordPress.
Quelques règles :
- Ne copiez jamais un MU Plugin depuis une source non fiable — vérifiez le code avant de l'uploader
- Commentez et versionnez votre code — dans 6 mois, vous aurez oublié ce que fait ce fichier
- Sauvegardez avant toute modification — une erreur PHP dans un MU Plugin peut casser tout le site
- Testez en local d'abord — utilisez un environnement local (Local, Studio, XAMPP) avant de déployer
En cas de problème, renommez le fichier en .php.bak via FTP. WordPress ne le chargera plus. Plus d'informations sur la sécurisation de WordPress.
C'est quoi exactement un MU Plugin WordPress ?
Un MU Plugin (Must-Use Plugin) est un fichier PHP placé dans le répertoire /wp-content/mu-plugins/ de votre installation WordPress. Contrairement aux plugins classiques, il est chargé automatiquement et ne peut pas être désactivé depuis le tableau de bord. Il faut supprimer le fichier via FTP pour le désactiver.
Quelle différence entre un MU Plugin et functions.php ?
Le functions.php est lié à votre thème actif. Si vous changez de thème, vous perdez tout le code qu'il contient. Un MU Plugin est indépendant du thème : il reste actif quoi qu'il arrive. Utilisez functions.php pour ce qui est spécifique à l'apparence (menus, sidebars) et les MU Plugins pour les fonctionnalités permanentes (sécurité, performance, types de contenu personnalisés).
Peut-on mettre n'importe quel plugin en MU Plugin ?
Non. Les plugins qui utilisent des hooks d'activation (register_activation_hook) ne fonctionneront pas correctement en MU Plugin. Les gros plugins comme WooCommerce, Elementor ou Yoast ne sont pas conçus pour ça. Les MU Plugins sont faits pour du code léger et spécifique : snippets de sécurité, filtres, redirections, Custom Post Types.
Comment désactiver un MU Plugin en cas de problème ?
Contrairement aux plugins classiques, impossible de désactiver un MU Plugin depuis l'admin WordPress. Vous devez accéder à vos fichiers via FTP ou le gestionnaire de fichiers de votre hébergeur, puis renommer le fichier (par exemple en .php.bak) ou le supprimer du répertoire /wp-content/mu-plugins/.
Les MU Plugins fonctionnent-ils en multisite ?
Oui, et c'est même là qu'ils sont les plus utiles. En multisite, un MU Plugin est actif sur tous les sites du réseau automatiquement. C'est idéal pour appliquer des règles de sécurité, des personnalisations d'admin ou des fonctionnalités communes à tous les sites sans devoir activer un plugin sur chacun.
Comment organiser plusieurs MU Plugins ?
WordPress ne lit que les fichiers PHP à la racine de /mu-plugins/. Pour organiser votre code en sous-dossiers, créez un fichier load.php à la racine qui charge chaque sous-plugin avec require. Nommez vos fichiers clairement (securite.php, performance.php, custom-post-types.php) et ajoutez un en-tête commenté dans chacun.
Un MU Plugin peut-il ralentir mon site ?
Oui, si le code est mal écrit. Un MU Plugin est exécuté à chaque chargement de page, comme n'importe quel plugin. Gardez vos MU Plugins légers et spécifiques. Évitez les requêtes en base de données inutiles et les appels API externes dans un MU Plugin.
Où trouver des MU Plugins prêts à l'emploi ?
Il n'existe pas de répertoire officiel de MU Plugins sur WordPress.org. La plupart sont des snippets que vous créez vous-même ou trouvez dans des articles techniques. Notre article 100 Snippets WordPress contient de nombreux exemples directement utilisables en MU Plugins.
Les MU Plugins, c'est simple et efficace. Un fichier PHP, un dossier, et c'est réglé. Pour aller plus loin dans l'optimisation de votre WordPress, découvrez également notre guide sur le fichier wp-config.php et functions.php.
Chaque mois, je passe 15 heures en veille WordPress. Vous, vous recevez un email de 3 minutes.
Sécurité, performance, SEO, nouveautés, IA : l'essentiel trié, vérifié et expliqué par un formateur WordPress depuis 2012 et fondateur de WPServeur.
1 email par mois. Désabonnement en 1 clic.
Analyser avec l'IA
Partager

