MU plugin WordPress: l'arma sottoutilizzata per modifiche che sopravvivono agli aggiornamenti del tema

I must-use plugin sono il posto giusto per le modifiche WordPress che non devono sparire quando cambi tema. Cosa sono, perché sopravvivono dove functions.php muore, e quando usarli invece di un plugin completo.
C'è un posto in WordPress dove il codice vive più a lungo della maggior parte delle altre personalizzazioni, e quasi nessuno lo usa. Si chiama cartella mu-plugins, sta dentro wp-content, e ospita i must-use plugin: file PHP che WordPress carica automaticamente, prima dei plugin normali, e che non puoi disattivare dal pannello admin. Per molte personalizzazioni è il posto giusto. Per quasi tutte, è meglio di functions.php.
Il problema con functions.php è che vive nel tema. Cambi tema, o aggiorni un tema che sovrascrive il file, e le tue modifiche spariscono. Lo vediamo costantemente: un cliente cambia tema per rinfrescare il design e perde un'integrazione custom, un redirect, un filtro sul checkout. functions.php è comodo per modifiche legate alla presentazione, ma è il posto sbagliato per logica di business che deve sopravvivere ai cambi tema.
Cosa rende i MU plugin diversi
Tre caratteristiche li distinguono. Primo: WordPress li carica automaticamente all'avvio, non serve attivarli. Secondo: non appaiono nella lista plugin del pannello admin, quindi un utente non tecnico non può disattivarli per sbaglio. Terzo: si caricano prima dei plugin normali, il che li rende utili per filtri che devono intervenire presto nel ciclo di vita di WordPress.
Il rovescio della medaglia: non puoi disattivarli selettivamente, non hanno un meccanismo di aggiornamento automatico, e un errore di sintassi in un MU plugin può bloccare l'intero sito. Per questo conviene tenerli piccoli e focalizzati, una funzionalità per file.
Creare un MU plugin
Crea la cartella wp-content/mu-plugins (se non esiste) e aggiungi un file PHP. WordPress carica solo i file direttamente nella cartella, non nelle sottocartelle, quindi per organizzare più MU plugin conviene usare un loader:
<?php
// wp-content/mu-plugins/wp-planet-loader.php
// Loader che include tutti i MU plugin organizzati in sottocartelle
$mu_plugins = glob( __DIR__ . '/wp-planet-plugins/*.php' );
foreach ( $mu_plugins as $file ) {
require_once $file;
}
// Esempio di MU plugin singolo senza loader:
// wp-content/mu-plugins/disabilita-xml-rpc.php
add_filter( 'xmlrpc_enabled', '__return_false' );Un esempio concreto: redirect dopo login per ruolo
Un caso d'uso tipico: reindirizzare gli utenti non-admin alla home dopo il login invece che alla dashboard. È logica di business, non di presentazione, e non deve sparire se cambi tema:
<?php
// wp-content/mu-plugins/redirect-login-by-role.php
add_filter( 'login_redirect', function( $redirect_to, $request, $user ) {
if ( ! $user || is_wp_error( $user ) ) {
return $redirect_to;
}
// Gli amministratori vanno alla dashboard, gli altri alla home
if ( in_array( 'administrator', (array) $user->roles, true ) ) {
return admin_url();
}
return home_url();
}, 10, 3 );Quando usare un MU plugin, functions.php o un plugin vero
La regola pratica: se la modifica riguarda la presentazione (template, stili, hook di rendering), va in functions.php del tema child. Se è logica di business che deve sopravvivere ai cambi tema e non serve un'interfaccia di configurazione, va in un MU plugin. Se serve un pannello di configurazione, opzioni salvate nel database, o aggiornamenti automatici, allora un plugin completo è la scelta giusta.
I MU plugin sono sottovalutati perché non hanno il fascino di un plugin con pannello admin, ma per le personalizzazioni piccole e durature sono lo strumento più adatto. Meno dipendenze, più longevità, meno superficie di attacco. In un approccio orientato al codice pulito, è spesso la scelta migliore.
Codice pulito, prestazioni e dipendenze ridotte al minimo.
Sviluppo WordPress personalizzato: temi leggeri, plugin su misura e integrazioni API senza appesantire il sito.


