Comment créer un Custom (MU) Plugin

La différence entre un plugin "normal" et un MU-plugin ("Must-Use") dans WordPress est la suivante : Les MU-plugins sont activés automatiquement une fois téléchargés dans un dossier spécifique de WordPress.

Dans cet Article

Créer un MU-Plugin customisé

1
Créez un dossier nommé mu-plugins dans votre dossier wp-content.
Dans le cas où un dossier mu-plugins existe déjà, n'en créez pas de nouveau, il suffit d'utiliser celui existant.
2
Utilisez un éditeur de texte de base et créez un nouveau fichier pour y mettre le code.
Pour commencer, vous pouvez  utiliser le simple préambule à la fin de cet article.
3
Enregistrez le fichier avec le nom que vous voulez en utilisant uniquement des caractères latins, des chiffres et des tirets dans votre nom de fichier.
Exemple :  wp-rocket-custom.php
4
Uploadez ce fichier au dossier mu-plugins créé à l'étape 1.
5

Enfin, assurez-vous de désactiver et de réactiver WP Rocket.

Remarque : Vous pouvez créer un plugin normal au lieu d'un MU-plugin simplement en déposant le même fichier dans /wp-content/plugins au lieu de /wp-content/mu-plugins. N'oubliez pas que vous devrez alors activer votre MU-plugin sur votre page d'administration des plugins.

Les points à considérer

  • Toujours tester votre plugin avant de l'uploader sur votre site en ligne !
    N'oubliez pas qu'un point-virgule manquant dans PHP peut casser votre site. Lorsque quelque chose se casse, retirez le fichier du plugin.
  • Assurez-vous que votre éditeur de texte est mis en mode texte brut lors de l'édition du code !
    Le texte enrichi compromettrait votre code et entraînerait des erreurs PHP, voire casserait votre site.
  • Les MU-plugins sont chargés automatiquement et par ordre alphabétique de leurs noms de fichiers.
  • Si pour une raison quelconque vous utilisez une fonction existante de WP Rocket, wrappez-la toujours dans une condition comme ceci :
    if ( function_exists( 'some_wp_rocket_function' ) ) { 
    	// do something with some_wp_rocket_function() here
    }<br>
    	
  • Encore une fois, assurez-vous de désactiver et de réactiver WP Rocket une fois que vous avez uploadé votre plugin customisé.

Exemple de MU-plugin

Dans le cas où vous rencontrez des problèmes avec le copié-collé du code suivant, téléchargez le Gist à la place et assurez-vous que votre éditeur de texte est réglé sur UTF-8.

<?php
/**
 * Plugin Name: Your Plugin Name Here
 * Description: Short description of your plugin here.
 * Author:      your name here
 * License:     GNU General Public License v3 or later
 * License URI: http://www.gnu.org/licenses/gpl-3.0.html
 */

// Basic security, prevents file from being loaded directly.
defined( 'ABSPATH' ) or die( 'Cheatin&#8217; uh?' );

/* Prefix your custom functions!
 *
 * Function names must be unique in PHP.
 * In order to make sure the name of your function does not
 * exist anywhere else in WordPress, or in other plugins,
 * give your function a unique custom prefix.
 * Example prefix: wpr20151231
 * Example function name: wpr20151231__do_something
 *
 * For the rest of your function name after the prefix,
 * make sure it is as brief and descriptive as possible.
 * When in doubt, do not fear a longer function name if it
 * is going to remind you at once of what the function does.
 * Imagine you’ll be reading your own code in some years, so
 * treat your future self with descriptive naming. ;)
 */

/**
 * Pass your custom function to the wp_rocket_loaded action hook.
 *
 * Note: wp_rocket_loaded itself is hooked into WordPress’ own
 * plugins_loaded hook.
 * Depending what kind of functionality your custom plugin
 * should implement, you can/should hook your function(s) into
 * different action hooks, such as for example
 * init, after_setup_theme, or template_redirect.
 * 
 * Learn more about WordPress actions and filters here:
 * https://developer.wordpress.org/plugins/hooks/
 *
 * @param string 'wp_rocket_loaded'         Hook name to hook function into
 * @param string 'yourprefix__do_something' Function name to be hooked
 */
add_action( 'wp_rocket_loaded', 'yourprefix__do_something' );

/**
 * Define your custom function here.
 * This example just returns true.
 * 
 * @return bool Boolean value TRUE
 */
function yourprefix__do_something() {
	return true;
}