Come creare un (MU) plugin personalizzato

La differenza tra un plugin regolare e un MU ( must use) plugin di WordPress è che i MU plugin sono attivati automaticamente una volta caricare su una specifica cartella di WordPress.

In questo articolo

Creare un MU plugin

1
Creare una cartella chiamata mu-plugins dentro la directory wp-content.
Nel caso in cui la cartella mu-plugins esista già, non crearne una nuova, usa semplicemente quella esistente.
2
Usando un editore di testo basico, crea un nuovo file e inserisci il tuo codice.
Per iniziare, puoi  usare il semplice esempio alla fine di questo articolo.
3
Salva il file con qualsiasi nome tu voglia usando però solo caratteri alfanumerici e trattini. 
Esempio di nome per il file: wp-rocket-custom.php
4
Carica questo file nella cartella mu-plugins che hai creato al punto 1.
5
Infine, assicurati di disattivare e riattivare WP Rocket.

Nota: Puoi anche creare un plugin regolare invece che un MU plugin semplicemente trascinando il file nella cartella wp-content/plugins instead invece che in mu-plugins. Ricorda che in quel caso dovrai attivare il tuo plugin nel pannello di amministrazione WordPress, nella pagina dei plugin.

Informazioni da Considere

  • Testa sempre il tuo plugin prima di caricarlo sul tuo sito live!
    Ricorda che anche solo l'omissione di un punto e virgola " ;" nel codice PHP può "rompere" il tuo sito. Quando il sito si "rompe", semplicemente rimuovi il plugin.
  • Assicurati che l'editore di testo sia configurato in modalità testo mentre modifichi il codice! Usare Rich text potrebbe compromettere il to codice e produrre degli errori nel PHP o perfino "rompere" il sito.
  • I MU plugins sono caricati automaticamente e in ordine alfabetico.
  • Se per qualche ragione stai usando delle funzioni già esistenti di WP Rocket, includile in una condizione come in questo esempio:

    if ( function_exists( 'some_wp_rocket_function' ) ) { 
    	// do something with some_wp_rocket_function() here
    }<br>
    	
  • Infine, assicurati sempre di disattivare e riattivare WP Rocket una volta che hai caricato il tuo plugin personalizzato.

Esempio di MU plugin

Se vedi che copiando-incollando il codice qui sotto si producono dei problemi, prova a  scaricare il Gist e assicurati che il tuo editor di testo sia configurato su 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;
}