Les Mu-plugins sous WordPress

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 :