
🚫 Come disabilitare selettivamente i plugin di WordPress su pagine e articoli specifici
Ogni plugin WordPress aggiunge codice PHP che viene eseguito al caricamento della pagina, carica script e fogli di stile e a volte effettua query aggiuntive al database. Più plugin hai, più le tue pagine diventano pesanti. Ma il problema non è solo la quantità: anche un singolo plugin "loquace" come Contact Form 7 carica i suoi file .css e .js su ogni pagina per impostazione predefinita, comprese le pagine dove non esiste alcun modulo.
Gli sviluppatori di CF7 riconoscono apertamente che il plugin carica le risorse ovunque perché lo shortcode può apparire in qualsiasi punto. Questa logica non è esclusiva di CF7; la maggior parte dei plugin funziona allo stesso modo. Il risultato: la homepage del tuo blog carica gli script per uno slider gallery che non è mai stato presente.
La buona notizia: WordPress ti permette di disabilitare selettivamente il caricamento dei plugin solo sulle pagine dove servono davvero. Vedremo entrambi gli approcci: programmatico (usando un mu-plugin con il filtro option_active_plugins) e basato su plugin (Plugin Organizer, Perfmatters, Plugin Load Filter). Alla fine, misureremo i risultati usando il monitor di rete del browser.
💡 Panoramica rapida:
- Scegli i plugin in base a tre criteri: reputazione dello sviluppatore, prestazioni sotto carico e reale necessità
- Approccio programmatico: scrivi uno snippet PHP che usa
get_option('active_plugins')per ottenere l'elenco dei plugin attivi e li filtra in base all'URL della pagina - Mu-plugin: posiziona il filtro in
/wp-content/mu-plugins/in modo che venga eseguito PRIMA di tutti i plugin normali, disabilitando quelli superflui al volo - Approccio con plugin: Plugin Organizer e Perfmatters forniscono un'interfaccia visiva per le stesse operazioni senza scrivere una sola riga di codice
- Misura l'effetto usando Chrome/Firefox DevTools: dopo il filtraggio, le richieste HTTP calano e il tempo di caricamento diminuisce in modo evidente
Tre regole per scegliere i plugin
Prima di filtrare il caricamento dei plugin, assicurati che quelli presenti sul tuo sito meritino davvero un posto in wp_options. Tre regole che ti risparmiano grattacapi e risorse del server.
Installa solo plugin verificati di sviluppatori con una comprovata esperienza. Apri la pagina del plugin su WordPress.org e controlla: numero di installazioni attive, valutazione, data dell'ultimo aggiornamento e numero di ticket di supporto risolti. Un plugin con oltre 100.000 installazioni, una valutazione superiore a 4,5 e un aggiornamento negli ultimi 3 mesi è una scelta sicura.

Preferisci plugin scalabili. Due plugin con funzionalità identiche possono influire sulla velocità in modo diverso. Confronta i candidati usando l'ispettore del browser (scheda Network) o servizi online come Google PageSpeed Insights, Pingdom e GTmetrix; misura il tempo di caricamento e il numero di richieste HTTP prima e dopo l'installazione.
Non tenere peso morto. Ogni plugin inutilizzato significa codice PHP extra in ogni richiesta. Verifica periodicamente l'elenco dei plugin attivi e rimuovi quelli di cui il tuo sito può fare a meno. Se un plugin "potrebbe tornare utile tra sei mesi", disattivalo ed eliminalo, poi installane una versione aggiornata tra sei mesi.
Esempio pratico: Contact Form 7
Contact Form 7 è il soggetto di test perfetto. Aggiunge a ogni pagina:
style.cssper gli stili del moduloscripts.jsper la logica di validazione e invio
Anche se una pagina non ha lo shortcode [contact-form-7], entrambi i file vengono caricati fedelmente. Lo screenshot qui sotto mostra il pannello Rete di Chrome DevTools, che non mente:

La soluzione: modificare la logica di caricamento all'interno del plugin (che si romperà a ogni aggiornamento) oppure disabilitare selettivamente il plugin per tutte le pagine tranne quella che ti serve. Il secondo approccio è più affidabile, quindi concentriamoci su quello.
Passo 1. Ottenere l'elenco dei plugin attivi via PHP
Prima di filtrare, devi capire dove WordPress memorizza l'elenco dei plugin attivi. Sono tutti nella tabella wp_options, nella riga con la chiave active_plugins. Puoi recuperare l'array con una singola funzione get_option.
Aggiungi questo codice al plugin Code Snippets o al tuo file plugin personale (non dimenticare l'intestazione del plugin in cima):
1 <?php 2 /** 3 * Plugin Name: Active Plugins Lister 4 */ 5 6 add_shortcode( 'activeplugins', function() { 7 $active_plugins = get_option( 'active_plugins' ); 8 $plugins = ""; 9 if ( count( $active_plugins ) > 0 ) { 10 $plugins = "<ul>"; 11 foreach ( $active_plugins as $plugin ) { 12 $plugins .= "<li>" . $plugin . "</li>"; 13 } 14 $plugins .= "</ul>"; 15 } 16 return $plugins; 17 } );
Salva il file come active-plugins.php e caricalo in /wp-content/plugins/. Crea una pagina di test, inserisci lo shortcode [activeplugins] e otterrai un elenco numerato di tutti i plugin attivi nel formato folder/file.php.

Ecco il risultato dopo aver inserito lo shortcode in una pagina:

Step 2. Il filtro option_active_plugins: il tuo strumento principale
Ora lo strumento principale: il filtro option_active_plugins. Appartiene alla famiglia di filtri option_$option_name e viene eseguito ogni volta che WordPress recupera un valore di opzione dal database. Poiché i plugin attivi sono memorizzati come opzione active_plugins, questo filtro ti permette di modificare l'array al volo: rimuovere plugin indesiderati o aggiungerne di nuovi.
Ecco un esempio minimo che attiva programmaticamente Advanced Custom Fields (supponendo che il plugin sia già installato):
1 add_filter( 'option_active_plugins', function( $plugins ) { 2 $myplugin = "advanced-custom-fields/acf.php"; 3 if ( ! in_array( $myplugin, $plugins ) ) { 4 $plugins[] = $myplugin; 5 } 6 return $plugins; 7 } );
Questo codice aggiunge ACF all'elenco dei plugin attivi su ogni pagina. Non particolarmente pratico, ma il principio è chiaro: puoi modificare l'array $plugins come preferisci.
Nota importante: il filtro deve essere eseguito prima dei plugin normali, altrimenti WordPress leggerà prima l'elenco non filtrato. Ecco a cosa servono i mu-plugin.
Step 3. Creare un mu-plugin per la disattivazione selettiva
I must-use plugin risiedono in /wp-content/mu-plugins/ e vengono eseguiti prima di tutti i plugin normali. È esattamente ciò che ci serve: il nostro filtro prende il controllo per primo.
C'è un problema: i tag condizionali di WordPress (is_page(), is_single() e altri) non funzionano nei mu-plugin perché la richiesta non è ancora stata analizzata, quindi restituiscono tutti false. Devi analizzare l'URL manualmente tramite $_SERVER['REQUEST_URI'].
Ecco un mu-plugin pronto all'uso che disattiva Contact Form 7 su tutte le pagine tranne /contact/:
1 $request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); 2 $is_admin = strpos( $request_uri, '/wp-admin/' ); 3 4 if ( false === $is_admin ) { 5 add_filter( 'option_active_plugins', function( $plugins ) { 6 global $request_uri; 7 8 $is_contact_page = strpos( $request_uri, '/contact/' ); 9 $myplugin = "contact-form-7/wp-contact-form-7.php"; 10 $k = array_search( $myplugin, $plugins ); 11 12 if ( false !== $k && false === $is_contact_page ) { 13 unset( $plugins[ $k ] ); 14 } 15 16 return $plugins; 17 } ); 18 }
Analizziamolo riga per riga:
parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH )estrae il percorso della richiesta (ad esempio,/blog/kak-otkljuchit-plaginy/)strpos( $request_uri, '/wp-admin/' )verifica se siamo nell'area di amministrazione; in tal caso, il filtro non si applica, mantenendo accessibili le pagine delle impostazioni del pluginarray_search( $myplugin, $plugins )trova CF7 nell'array dei plugin attiviunset( $plugins[ $k ] )rimuove il plugin dall'elenco se NON siamo sulla pagina dei contatti
Salva il file, caricalo in /wp-content/mu-plugins/ e svuota la cache. Ora lo shortcode [activeplugins] dovrebbe mostrare Contact Form 7 solo sulla pagina /contact/.
Ecco come si presenta lo stesso principio per più plugin contemporaneamente. Invece di array_search con un singolo plugin, usa un array e array_diff:
1 $request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); 2 $is_admin = strpos( $request_uri, '/wp-admin/' ); 3 4 if ( false === $is_admin ) { 5 add_filter( 'option_active_plugins', function( $plugins ) { 6 global $request_uri; 7 8 $is_contact_page = strpos( $request_uri, '/contact/' ); 9 $myplugins = array( 10 "contact-form-7/wp-contact-form-7.php", 11 "code-snippets/code-snippets.php", 12 "query-monitor/query-monitor.php", 13 "autoptimize/autoptimize.php" 14 ); 15 16 if ( false === $is_contact_page ) { 17 $plugins = array_diff( $plugins, $myplugins ); 18 } 19 20 return $plugins; 21 } ); 22 }
La funzione array_diff restituisce i valori del primo array che non sono presenti nel secondo, esattamente ciò che serve per la disattivazione in blocco.
Il risultato è immediatamente visibile nel pannello Network: il file script.js di Contact Form 7 scompare dall'elenco delle risorse su tutte le pagine tranne quella dei contatti.

L'approccio programmatico è flessibile ma richiede modifiche al codice per ogni nuovo plugin. Per chi preferisce un'interfaccia visiva, esistono plugin di filtro già pronti.
Approccio basato su plugin: filtrare senza scrivere codice
Plugin Load Filter
Plugin Load Filter è uno strumento gratuito per filtrare i plugin in base a diverse condizioni. Supporta:
- filtraggio per tipo di contenuto (articoli, pagine, tipi di contenuto personalizzati)
- filtraggio per formato articolo
- eccezioni per i moduli Jetpack
- filtraggio URL per richieste REST API, Heartbeat, AJAX e AMP

Impostazioni per attivare il filtro in base al tipo di pagina:

Dopo l'attivazione, l'amministratore configura a quali pagine applicare il filtro tramite la scheda «Filter Activation by Page Type». Minimalista e diretto.
Plugin Organizer
Plugin Organizer è un veterano tra i plugin di filtraggio, con una valutazione a 5 stelle. Offre il pieno controllo sul caricamento:
- disattivazione selettiva dei plugin per URL della pagina
- disattivazione per ruolo utente
- gruppi di plugin (attiva/disattiva un insieme in blocco)
- modifica dell'ordine di caricamento dei plugin

Nella pagina «Global Plugins» puoi trascinare e rilasciare per disattivare globalmente un plugin sull'intero sito e riattivarlo selettivamente su pagine specifiche tramite un metabox nell'editor degli articoli. Nello screenshot qui sotto, Contact Form 7 è disattivato globalmente:

Ed ecco lo stesso metabox nella schermata di modifica della pagina contatti, che sovrascrive le impostazioni globali:

Plugin Organizer mostra anche informazioni di debug: quali plugin sono stati effettivamente caricati su ogni pagina e perché. La documentazione è disponibile sul sito dello sviluppatore.
Perfmatters
Perfmatters è uno strumento premium del team di sviluppo di Kinsta. La sua funzione principale, Script Manager, raggruppa tutti gli script e gli stili per nome del plugin o del tema.

Puoi disabilitare completamente un plugin o rimuovere selettivamente singoli file CSS/JS al suo interno. Per i siti con strutture URL complesse, esiste la disabilitazione degli script tramite espressioni regolari.
Tre scenari in cui Perfmatters offre guadagni immediati:
- Plugin per social media (pulsanti di condivisione): disabilitati ovunque tranne che negli articoli del blog
- Contact Form 7: disabilitato ovunque tranne che nella pagina del modulo
- Fogli di stile dell'editor a blocchi Gutenberg (
block-library/style.min.cssetheme.min.css): rimossi per i siti che usano l'editor classico
In un test indipendente su woorkup.com, disabilitare gli script non necessari tramite Perfmatters ha ridotto il tempo di caricamento totale del 20,2%, le richieste HTTP sulla homepage da 46 a 30 e il peso della pagina da 506,3 KB a 451,6 KB.

Perfmatters è un plugin a pagamento, e la spesa è giustificata per i siti in cui la velocità incide direttamente sulle conversioni. Per un piccolo blog, Plugin Organizer o un mu-plugin programmatico sono più che sufficienti.
Misurare i risultati con il monitor di rete del browser
Ottimizzare senza misurare è come andare a tentativi. I DevTools del browser forniscono un quadro accurato del prima e dopo senza bisogno di servizi di terze parti. Qualsiasi browser moderno va bene:
Su un'installazione WordPress di test con 18 plugin attivi, abbiamo misurato la velocità della pagina prima del filtraggio (cache vuota, Monitor di rete di Firefox):

Risultato: 255,19 KB, tempo di caricamento 1,24 secondi, 12 richieste.
Dopo aver installato Plugin Organizer e disabilitato globalmente Contact Form 7, il grafico a torta è cambiato:

Metriche: 104,21 KB, tempo di caricamento 0,80 secondi, 8 richieste.
Infine, abbiamo disabilitato tutti i plugin inutilizzati:

Risultato finale: 101,98 KB, tempo di caricamento 0,46 secondi, 8 richieste.
Confrontando gli estremi: la dimensione delle risorse si è più che dimezzata (da 255 a 102 KB), il tempo di caricamento è sceso da 1,24 a 0,46 secondi e le richieste HTTP sono passate da 12 a 8. I numeri parlano da soli: la disattivazione selettiva dei plugin offre guadagni di velocità tangibili anche su un sito piccolo, e il degrado di TTFB e LCP incide direttamente sul posizionamento nei motori di ricerca.
⁉️🤔 Domande frequenti
Un mu-plugin è obbligatorio o posso lasciare il codice in un plugin normale?
Puoi usare un plugin normale, ma l'ordine di caricamento potrebbe rovinare tutto. Se il tuo filtro
option_active_pluginsviene eseguito dopo che WordPress ha già letto l'elenco dei plugin attivi, non funzionerà. Un mu-plugin è l'unico modo per garantire che il tuo filtro prenda il controllo prima di tutti gli altri plugin. In un plugin normale, dipendi dall'ordine alfabetico o da hook che potrebbero cambiare dopo l'aggiornamento di qualsiasi altro plugin.
Cosa succede se non posso creare la cartella mu-plugins sul mio hosting?
Puoi creare la cartella
/wp-content/mu-plugins/via FTP, dal file manager del tuo hosting o con WP-CLI usando il comandowp scaffold mu-plugin. Se non hai alcun accesso al file system, usa Plugin Organizer: fa la stessa cosa attraverso un proprio meccanismo di filtraggio e non richiede la modifica dei file sul server. La maggior parte dei provider di hosting dà accesso a wp-content tramite un file manager nel pannello di controllo. Permessi della cartella: 0755.
Disabilitare un plugin tramite il filtro influisce sulle sue impostazioni?
No, le impostazioni dei plugin sono salvate nel database (tabella
wp_options) e restano intatte. Stai semplicemente impedendo a WordPress di caricare il codice del plugin durante l'elaborazione di una richiesta specifica. Tutte le impostazioni rimangono al loro posto e alla richiesta successiva in cui il plugin non viene filtrato, si carica con piena funzionalità. La disabilitazione viaoption_active_pluginsblocca specificamente il caricamento del codice al volo, non è una disattivazione. Nell'area di amministrazione, il plugin resta attivo, le sue impostazioni non vengono toccate e le attività pianificate (WP-Cron) continuano a funzionare.
Come posso verificare che il filtro funzioni davvero?
Il metodo più visivo è il pannello Network negli Strumenti per sviluppatori di Chrome (F12 → Network). Aprilo su una pagina in cui il plugin dovrebbe essere disabilitato, ricarica tenendo premuto Ctrl (svuota la cache) e cerca il nome del plugin o il suo file CSS/JS. Se non ci sono richieste, il filtro funziona. Plugin come Query Monitor mostrano anche l'elenco dei componenti caricati e il loro tempo di esecuzione. Per Contact Form 7, digita
contact-form-7nella ricerca del pannello Network; se il filtro ha funzionato, non vedraistyle.cssoscripts.jsdi CF7 nell'elenco delle risorse caricate.
Ha senso disabilitare i plugin su un sito molto piccolo con solo 5-7 plugin?
Se tutti e 5 i plugin servono realmente su ogni pagina, no. Ma anche su un sito piccolo, spesso ci sono un paio di plugin che funzionano solo su una pagina: un modulo di contatto, una galleria portfolio, uno slider in homepage. Disabilitare quella coppia sulle altre pagine riduce sensibilmente le richieste HTTP e accelera il caricamento. Come abbiamo visto sopra sull'installazione di test, anche un solo plugin filtrato fa risparmiare decine di millisecondi. Per un sito con oltre 1.000 visitatori al giorno, quei millisecondi si sommano in una differenza percepibile sia per l'utente che per i Core Web Vitals.
Codice, plugin o Perfmatters: cosa scegliere per il tuo obiettivo
Se il tuo sito ha 5 plugin e tutti servono realmente su ogni pagina, questa guida non fa per te. Ma un tipico sito WordPress arriva ad avere 15-25 plugin attivi, di cui solo 5-7 funzionano effettivamente su una data pagina. Il resto consuma solo tempo server e rallenta il caricamento.
Un mu-plugin programmatico è un approccio gratuito, leggero e completamente controllabile, ma richiede attenzione a ogni nuovo plugin. Plugin Organizer è il punto di equilibrio ideale: interfaccia visiva, flessibilità e gratuito. Perfmatters è la scelta per i progetti commerciali dove ogni decimo di secondo di caricamento si converte in denaro.
Se hai accumulato più plugin del necessario, inizia con un audit e una pulizia di quelli inutilizzati, poi prendi il controllo del caricamento di quelli che restano. Scegli l'approccio in base al tuo livello di comfort e al carico del sito, e vedrai la differenza già alla prima misurazione con il pannello Network. Non aspettare che i plugin si mangino il tuo TTFB.



