
🧹 Come rimuovere completamente un plugin WordPress: pulizia passo passo di database e file
Il tuo sito rallenta fino a bloccarsi, i backup lievitano a un gigabyte e phpMyAdmin mostra decine di tabelle con prefissi di plugin che hai "cancellato" un anno fa. Ti suona familiare?
Il pulsante standard "Elimina" nella sezione plugin si limita a rimuovere la cartella da wp-content/plugins. Tutto il resto (tabelle, opzioni, cron job, shortcode nei post) rimane nel database e su disco. Gli sviluppatori gestiscono la pulizia in modo diverso: alcuni fanno ordine diligentemente tramite uninstall.php, mentre altri lasciano tutto intatto.
Ecco un algoritmo completo per rimuovere un plugin senza lasciare traccia: dalla dashboard all'SQL manuale. Con backup in ogni fase e istruzioni precise per i plugin più diffusi.
💡 Panoramica rapida:
- L'eliminazione tramite dashboard è solo il primo passo; tabelle, shortcode e cron job richiedono una pulizia separata
- Prima di qualsiasi operazione sul database, esegui un backup completo (usando gli strumenti integrati dell'hosting o un plugin)
- WooCommerce, Yoast SEO, Wordfence e altri plugin popolari hanno le proprie costanti e query SQL
- Un plugin disattivato non è "spento" ma "dormiente"; i suoi file restano accessibili per accesso diretto e rappresentano un vettore d'attacco
Perché il pulsante "Elimina" non basta
WordPress richiama il file uninstall.php del plugin o un callback dal file principale quando lo si elimina. Ma questo funziona solo se lo sviluppatore ha creato tale file. In pratica, circa la metà dei plugin del catalogo WordPress.org è priva di uninstall.php o lo implementa in modo parziale: cancella la cartella ma lascia intatto il database.
Cosa rimane dopo l'eliminazione standard:
Tipo di residuo | Dove cercare | Rischio |
|---|---|---|
Tabelle del database |
| Crescita del database, query più lente |
Righe in |
| Opzioni |
Righe in |
| Dati morti durante il recupero dei post |
Shortcode nel contenuto | Testo di post/pagine |
|
Cron job |
| Richieste HTTP non necessarie a wp-cron |
File fuori dalla cartella plugin |
| Ingombro su disco |
Regole in | Root del sito | Conflitti con nuovi plugin |
Le righe con il flag autoload sono particolarmente critiche: WordPress le carica a ogni richiesta. Cinquanta righe autoload extra aggiungono 30-80 ms al tempo di risposta del server. A prima vista sembra trascurabile, ma con 100.000 visualizzazioni mensili, l'impatto sulle prestazioni è notevole.
Disattivazione vs eliminazione: qual è la differenza
La differenza è fondamentale, ed è utile comprenderla prima di iniziare la pulizia.
Criterio | Disattivazione | Eliminazione completa |
|---|---|---|
File del plugin | Restano in | Cancellati |
Codice | Non eseguito, disponibile per la lettura | Assente |
Tabelle del database | Conservate | Dipende dallo sviluppatore |
Impostazioni | Conservate | Dipende da |
Aggiornamenti | Arrivano (per plugin gratuiti da.org) | Non arrivano |
Vulnerabilità | Il codice sul server è un vettore d'attacco | Nessuna minaccia |
Reversibilità | Un clic e il plugin è di nuovo attivo | Solo da backup |
Un plugin disattivato non è "spento" ma "dormiente". I file PHP risiedono fisicamente sul server. Se viene scoperta una vulnerabilità nel codice, un utente malintenzionato può accedere direttamente al file tramite il percorso in wp-content/plugins/, aggirando la logica di WordPress. I firewall WAF non risolvono questo problema: la protezione migliore è rimuovere completamente il codice inutilizzato dal server.
La regola è semplice: se non usi un plugin da più di una settimana, eliminalo. Riconfigurarlo è più veloce che gestire una violazione attraverso un buco in un codice abbandonato.
Pulizia passo dopo passo: 4 fasi
Fase 1: Eliminazione tramite dashboard
La prima fase è standard. Vai su Plugin → Installati, trova quello che ti serve. I plugin attivi sono evidenziati con una barra blu, quelli disattivati no.
Clicca "Elimina" sotto il nome, conferma con il pulsante "Sì, elimina questi file". WordPress richiamerà il file uninstall.php del plugin (se esiste) e cancellerà la cartella da wp-content/plugins.

Per i plugin semplici (un widget leggero, la sostituzione del logo nella pagina di login), la pulizia finisce qui. Non creano tabelle né scrivono in wp_postmeta. Ma i plugin di caching, SEO, sicurezza, gallerie e page builder richiedono ulteriori interventi.
Fase 2: Pulizia dei file via FTP
Alcuni plugin creano cartelle al di fuori di wp-content/plugins/. Percorsi tipici:
wp-content/uploads/plugin-name/: cache, immagini compresse, file esportatiwp-content/ngg/: NextGEN Gallerywp-content/ewww/: EWWW Image Optimizerwp-content/backup/: plugin di backup
Collegati al server via FTP (FileZilla, WinSCP) o tramite il file manager dell'hosting. Vai a wp-content/, trova la cartella con il nome del plugin ed eliminala. Prima di cancellare, scarica la cartella in locale; se conteneva upload degli utenti, ripristinali.
I plugin di caching (WP Rocket, W3 Total Cache, LiteSpeed Cache) scrivono inoltre in wp-content/cache/ e creano wp-content/advanced-cache.php. Elimina manualmente il file advanced-cache.php via FTP, e in wp-config.php trova e rimuovi questa riga:
1 define('WP_CACHE', true);
Fase 3: Rimozione degli shortcode dal contenuto
I plugin che aggiungono shortcode (form, gallerie, slider, tabelle) lasciano [shortcode] nudi nel testo dei post dopo l'eliminazione. L'effetto è disordinato e confonde i lettori.
Un modo rapido per silenziare gli shortcode inutilizzati è una riga nel file functions.php del tema attivo:
1 add_shortcode('pluginshortcode', '__return_false');

Sostituisci pluginshortcode con il tag del tuo shortcode. Ad esempio: nggallery, gravityform o contact-form-7. La funzione __return_false restituisce false e lo shortcode scompare dal frontend senza essere rimosso dal testo del post.
Aggiungi il codice tramite un tema child o il plugin Code Snippets; le modifiche al file functions.php del tema padre andranno perse al prossimo aggiornamento. Se decidi di ripristinare il plugin in seguito, ti basterà rimuovere questa riga.
Fase 4: Pulizia del database
La fase più critica. Esegui un backup completo del database prima di qualsiasi query SQL di eliminazione; esportare tramite phpMyAdmin richiede mezzo minuto e ti salva da errori irreversibili.
4a. Trova le tabelle del plugin. Vai su phpMyAdmin (tramite cPanel o il pannello di amministrazione del tuo hosting), seleziona il database del sito. Cerca le tabelle con il prefisso del plugin: wp_wc_* (WooCommerce), wp_yoast_* (Yoast SEO), wp_wf* (Wordfence). Selezionale, scegli "Elimina" in fondo → conferma.
4b. Automazione tramite Advanced Database Cleaner. Se preferisci non lavorare direttamente in phpMyAdmin, installa Advanced Database Cleaner. Questo plugin gratuito scansiona il database, individua tabelle e record orfani e li elimina con un clic.
4c. Pulizia di wp_options. Anche se il plugin non ha creato tabelle separate, ha quasi sicuramente scritto in wp_options. Esegui in phpMyAdmin (scheda SQL):
1 SELECT * FROM wp_options WHERE option_name LIKE '%pluginname%';
Sostituisci pluginname con parte del nome del plugin. Verifica che le righe appartengano effettivamente al plugin eliminato, poi:
1 DELETE FROM wp_options WHERE option_name LIKE '%pluginname%';
4d. Pulizia dei cron job. Alcuni plugin registrano i propri eventi cron. Installa WP Crontrol; mostra tutti i cron job registrati in un unico elenco. Trova gli eventi con il nome del plugin ed eliminali manualmente.
Specifiche per la rimozione dei plugin più diffusi
Ogni plugin importante lascia una traccia unica. Di seguito trovi le istruzioni precise per i più comuni.
WooCommerce
WooCommerce crea oltre 16 tabelle nel database. Per far sì che vengano ripulite automaticamente alla cancellazione, aggiungi a wp-config.php (prima della riga /* That's all, stop editing! */):
1 define('WC_REMOVE_ALL_DATA', true);
Questa costante obbliga WooCommerce a eseguire il suo uninstall.php completo al momento della cancellazione; tutte le tabelle wp_woocommerce_* e wp_wc_* saranno eliminate, inclusi prodotti, ordini e coupon. L'operazione è irreversibile, quindi il backup è obbligatorio.
Dopo aver eliminato il plugin, controlla anche wp_options, perché WooCommerce vi scrive decine di righe con il prefisso woocommerce_:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';

Se vengono trovate righe e il plugin è già stato cancellato, esegui la query DELETE con la stessa condizione.
Yoast SEO
Yoast SEO lascia record in wp_postmeta e wp_usermeta, oltre alle sue tabelle wp_yoast_indexable e wp_yoast_seo_links.
Per prima cosa, pulisci wp_postmeta:
1 SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Dopo aver confermato che si tratta di dati di Yoast, esegui:
1 DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Poi, wp_usermeta:
1 SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';

Elimina ciò che trovi con una query DELETE analoga. Yoast registra anche l'evento cron wpseo_onpage_fetch; rimuovilo tramite WP Crontrol. Elimina manualmente le tabelle wp_yoast_indexable e wp_yoast_seo_links da phpMyAdmin.
Akismet
Akismet è il plugin standard per la protezione dallo spam dei commenti, preinstallato con WordPress. Dopo la cancellazione, i suoi dati restano in wp_commentmeta:
1 SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';

Quindi:
1 DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
Se il sito ha migliaia di commenti, wp_commentmeta può pesare decine di megabyte. Dopo la pulizia, ottimizza la tabella:
1 OPTIMIZE TABLE wp_commentmeta;
Altri metodi per combattere lo spam sono descritti nel nostro articolo come fermare lo spam nei commenti di WordPress: tutte le 18 soluzioni.
Gravity Forms
Gravity Forms crea 9 tabelle nel database (wp_gf_*, wp_rg_*). Prima di eliminarlo, vai su Forms → Impostazioni → Disinstalla e conferma. Poi cancella il plugin dalla dashboard.
Dopo l'eliminazione, controlla wp_options:
1 SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';

Elimina le righe trovate con una query DELETE analoga.
Wordfence
Wordfence è uno dei plugin di sicurezza più "pesanti": crea 23 tabelle con il prefisso wp_wf*. La disinstallazione standard dalla dashboard non le rimuove.
Il plugin ufficiale di supporto Wordfence Assistant è stato dismesso dallo sviluppatore a dicembre 2025. Quindi puliamo manualmente: cancella il plugin principale Wordfence dalla dashboard, poi accedi a phpMyAdmin ed esegui:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wordfence%' OR option_name LIKE '%wf%';
Elimina le righe trovate con una query DELETE usando la stessa condizione. Poi individua ed elimina tutte le tabelle con il prefisso wp_wf (di solito sono 23, da wp_wfblockediplog a wp_wflivetraffichuman). Via FTP, cancella la cartella wp-content/wflogs/ e il file wordfence-waf.php nella root del sito, se rimangono.
NextGEN Gallery
Il plugin crea 3 tabelle (wp_ngg_*) e una cartella wp-content/ngg/ con le gallerie caricate.
Per prima cosa, cancella il plugin dalla dashboard. Poi via FTP, elimina la cartella wp-content/ngg/, salvando prima le immagini delle gallerie se ti servono. In phpMyAdmin, esegui:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ngg%';
Elimina le righe trovate con una query DELETE usando la stessa condizione. Elimina manualmente le tabelle wp_ngg_pictures, wp_ngg_galleries e wp_ngg_album.
EWWW Image Optimizer
EWWW memorizza i dati di ogni immagine ottimizzata nella tabella wp_ewwwio_images: percorso del file, dimensione originale, dimensione dopo la compressione. Crea anche una cartella wp-content/ewww/ con la cache.
Elimina la cartella via FTP. Poi in phpMyAdmin:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';

Eliminate ciò che trovi ed elimina la tabella wp_ewwwio_images.
WP All Export
Il plugin crea 4 tabelle nel database. Dopo la cancellazione tramite dashboard, vai in phpMyAdmin, individua le tabelle con il prefisso wp_pmxe_*, selezionale ed esegui "Drop". Controlla inoltre wp_options per la chiave pmxe; il plugin memorizza lì le ultime impostazioni di esportazione.
Maggiori dettagli sul ciclo completo di rimozione dei plugin sono nel video tutorial qui sotto.
⁉️🤔 Domande frequenti
È sicuro eliminare le tabelle dei plugin direttamente tramite phpMyAdmin?
È sicuro a due condizioni: hai fatto un backup completo del database e hai identificato con precisione le tabelle come appartenenti a un plugin già cancellato. Le tabelle dei plugin di terze parti hanno sempre un prefisso riconoscibile:
wp_wc_,wp_yoast_owp_wf. Non toccare le tabelle di sistema di WordPress (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta e wp_usermeta) conDROP; puoi solo pulirle conDELETEselettivi.
Cosa devo fare se il sito mostra una schermata bianca dopo la cancellazione del plugin?
Ripristina il plugin dal backup: carica la cartella via FTP, importa le sue tabelle. La causa è molto probabilmente nel
functions.phpdel tema, dove potrebbe essere rimasta una chiamata a una funzione del plugin senza un fallback. Trova queste chiamate e racchiudile infunction_exists()oppure rimuovile, poi ripeti la cancellazione del plugin.
Come trovo tutte le tracce di un plugin nel database?
Installa il plugin Advanced Database Cleaner. Esegue la scansione di tutte le tabelle alla ricerca di dati orfani e mostra un elenco completo: tabelle, righe in
wp_optionsewp_postmeta, cron job. È più veloce e sicuro della ricerca manuale tramite phpMyAdmin.
Devo cancellare i plugin forniti in bundle con il tema?
Sì, se non li stai usando. I plugin forniti con i temi (WPBakery Page Builder, Slider Revolution, ACF Pro) spesso hanno licenze limitate e gli aggiornamenti di sicurezza non arrivano per loro. Un WPBakery disattivato e obsoleto con una vulnerabilità nota è una via diretta verso una violazione. Se non lo usi, cancellalo.
Posso ripristinare un plugin dopo la cancellazione completa?
Solo dal backup. Dopo aver pulito le tabelle e
wp_options, tutte le impostazioni del plugin sono perse in modo permanente. È proprio per questo che l'algoritmo sopra è costruito dal semplice al radicale: prima la cancellazione standard (reversibile), poi la pulizia dei file e solo alla fine il database. Procedi per fasi sequenziali; non passare direttamente a phpMyAdmin.
I dati del plugin rimangono in WordPress Multisite?
In Multisite, ogni sottosito ha le proprie tabelle:
wp_2_options,wp_2_postmetae così via. Dopo aver cancellato un plugin tramite il super admin, controlla le tabelle di ogni sottosito (wp_*_optionsewp_*_postmetaper tutti gli ID blog). Il plugin potrebbe essere stato attivato su singoli siti della rete e aver lasciato record nelle loro tabelle.
Conclusione: quando una pulizia completa è giustificata
Se hai un sito piccolo e cancelli un plugin ogni sei mesi, la cancellazione standard tramite dashboard più una pulizia una tantum di wp_options è sufficiente.
Ma se il tuo sito ha diversi anni, decine di plugin sono transitati e i backup sono cresciuti fino a un gigabyte, una pulizia chirurgica seguendo le istruzioni sopra ridurrà sensibilmente il database e velocizzerà il pannello di amministrazione. In pratica, abbiamo pulito migliaia di record orfani in wp_postmeta e decine di tabelle inutili, e il tempo di risposta del pannello di amministrazione si è ridotto quasi della metà.
Prendi l'abitudine: dopo aver cancellato un plugin, esegui la checklist (FTP → wp_options → cron → tabelle). Dieci minuti oggi ti risparmiano ore domani, quando un database gonfio manda in crash il tuo sito nel picco di traffico.
Quale plugin ha lasciato più spazzatura dopo la cancellazione sul tuo sito? Facci sapere nei commenti.



