Les Must-use plugins (ou mu-plugins) sont des plugins installés dans le répertoire mu-plugins du dossier wp-content.
Les mu-plugins sont automatiquement activés sur tous les sites de l’installation, et ne peuvent être désactivés. Pour les enlever, il faudra les supprimer du dossier mu-plugins.
Les MU plugins se composent d’un seul fichier PHP, et par conséquent, d’une fonctionnalité spécifique. Ce sont des éléments obligatoire dans un site WordPress.
A savoir, il est possible de modifier le nom du répertoire, en ajoutant les options WPMU_PLUGIN_DIR et WPMU_PLUGIN_URL dans le fichier wp-config.php.
Caractéristiques des mu-plugins
- Un mu-plugin étant toujours activé, il n’est donc pas nécessaire de l’activer via l’administration et les utilisateurs ne peuvent pas le désactiver par accident.
- Un mu-plugin est activé simplement en téléchargeant le fichier dans le répertoire de mu-plugins. Pas besoin d’ouvrir de session sur WordPress.
- PHP charge les mu-plugin dans l’ordre alphabétique, et avant les plugins normaux. Les fonctionnalités ajoutés dans un mu-plugin s’appliquent aux plugins normaux. Un mu-plugin peut donc rendre inactif un plugin normal.
Mises en garde
Malgré leurs qualités dans de nombreux cas particuliers, les mu-plugins ne peuvent pas être utiliser dans tous les cas. Il existe plusieurs inconvénients qui le rendent inadéquat dans certaines circonstances. Voici quelques mises en garde importantes à garder à l’esprit :
- Les mu-plugins ne s’affichent pas dans les notifications de mise à jour. Il est impossible de savoir, via WordPress, quand les mettre à jours. Les développeurs sont donc responsable de l’exécution des mises à jour des mu-plugins.
- Les plugins dépendant de hooks peuvent ne pas fonctionner dans le dossier mu-plugins.
- WordPress ne cherche que les fichiers PHP du répertoire courant mu-plugins, et non pas les fichiers des sous-répertoires (contrairement aux plugins normaux).
Exemple de mu-plugins
<?php
/**
* Plugin URI: https://guillaume-richard.fr/
* Plugin Name: WP Delete Version
* Description: Remove the version number of WordPress
* Version: 0.1.0
* Author: Guillaume RICHARD
* Author URI: https://guillaume-richard.fr/
* License: GNU General Public License v3 or later
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
* WordPress Available: yes
* Requires License: no
*/
// Basic security, prevents file from being loaded directly.
defined( 'ABSPATH' ) or die( 'Cheatin’ uh?' );
// Remove version in footer
function wpc_remove_version_footer() {
remove_filter('update_footer', 'core_update_footer');
}
add_filter('admin_menu', 'wpc_remove_version_footer');
// Remove version in RSS Feeds
function remove_version_generator() {
return '';
}
add_filter('the_generator', 'remove_version_generator');
// Cacher le numéro de version de WordPress via les appels aux scripts.
function removeVersionCallback($matches) {
return "ver=".md5(print_r($matches, true)."");
}
function removeVersion($url) {
return preg_replace_callback("/ver=[^&]*/", 'removeVersionCallback', $url);
}
add_filter( 'style_loader_src', 'removeVersion');
add_filter( 'script_loader_src', 'removeVersion');
Inspiration pour des mu-plugins
Voici quelques exemples de repository Github, contenant des mu-plugins :