Ottimizzare database WordPress: pulizia sicura
Ottimizzare database WordPress significa anche rimuovere dati temporanei o non più utili, come revisioni degli articoli, transitori scaduti e commenti già spostati nel cestino. Questi elementi occupano spazio nelle tabelle wp_posts, wp_options e wp_comments, anche se normalmente non sono visibili ai visitatori. La pulizia deve essere eseguita dopo un backup completo e, preferibilmente, su un ambiente di staging. WP-CLI offre i comandi più controllabili, mentre plugin come WP-Optimize semplificano l’operazione dal pannello di amministrazione. Limitare le revisioni future e gestire correttamente i transitori evita che il database torni rapidamente a crescere.
Preparare il database WordPress prima della pulizia
Prima di eliminare dati dal database WordPress è necessario creare un backup verificabile dei file e del database MySQL o MariaDB. Un backup valido deve poter essere ripristinato, non solo generato e lasciato sullo stesso spazio hosting.
La procedura è più sicura su un sito in staging, soprattutto quando il database contiene migliaia di revisioni o commenti. Sul sito in produzione è consigliabile eseguire la pulizia in un momento di traffico ridotto e controllare subito homepage, articoli, accesso amministrativo, moduli e negozio online.
WP-CLI richiede l’accesso SSH e deve essere disponibile nell’installazione WordPress. Per verificare il collegamento al sito si può usare:
wp core version
Il prefisso delle tabelle non è sempre wp_: può essere personalizzato durante l’installazione o dall’hosting. Per questo motivo è preferibile usare WP-CLI o plugin compatibili con WordPress invece di incollare query SQL trovate online senza adattarle.
Come eliminare le revisioni degli articoli WordPress
Le revisioni sono copie precedenti di articoli e pagine salvate da WordPress durante le modifiche. Ogni revisione viene memorizzata nella tabella dei post con il tipo revision e può aumentare rapidamente le dimensioni del database su siti con molti autori o aggiornamenti frequenti.
Con WP-CLI è possibile prima visualizzare gli identificativi delle revisioni:
wp post list --post_type=revision --format=ids
Dopo aver controllato l’elenco, gli identificativi possono essere passati al comando di eliminazione forzata:
wp post delete ID_REVISIONE_1 ID_REVISIONE_2 --force
La cancellazione forzata elimina definitivamente le revisioni selezionate senza spostarle nel cestino. Su un sito con molte revisioni è preferibile lavorare in lotti e verificare dopo ogni operazione che gli articoli pubblicati siano ancora disponibili.
Per limitare le revisioni generate in futuro, aprire il file wp-config.php nella directory principale dell’installazione e aggiungere questa direttiva prima della riga che segnala la fine delle modifiche al file:
define( 'WP_POST_REVISIONS', 5 );
Il valore 5 conserva al massimo cinque revisioni per articolo, ma non elimina immediatamente quelle già presenti. Le revisioni più vecchie vengono normalmente rimosse quando WordPress salva nuove modifiche all’articolo. Impostare WP_POST_REVISIONS su false disabilita le revisioni future, ma può ridurre la possibilità di recuperare contenuti cancellati per errore.
Un plugin di ottimizzazione può eseguire la stessa operazione dal pannello di WordPress. WP-Optimize, per esempio, consente di selezionare le revisioni durante la pulizia del database; le voci dei menu possono cambiare tra versioni, quindi è importante usare l’anteprima e controllare il backup prima della conferma.
Come cancellare i transitori scaduti senza rompere la cache
I transitori sono valori temporanei utilizzati da WordPress e dai plugin per memorizzare cache, risultati di richieste esterne, token e impostazioni temporanee. I transitori scaduti vengono spesso eliminati automaticamente, ma possono rimanere nella tabella wp_options fino all’esecuzione di una pulizia o al successivo controllo del valore.
Il comando WP-CLI per eliminare i transitori scaduti è:
wp transient delete --expired
Su WordPress multisito, i transitori di rete possono richiedere l’opzione dedicata:
wp transient delete --expired --network
La cancellazione dei soli transitori scaduti è generalmente sicura perché WordPress o il plugin che li ha creati può rigenerarli. Non è invece consigliabile eliminare indiscriminatamente tutti i transitori attivi: alcuni plugin potrebbero richiedere nuove autenticazioni, ricostruire cache costose o inviare nuovamente richieste a servizi esterni.
La pulizia dei transitori può essere eseguita anche con WP-Optimize o Advanced Database Cleaner. Prima di confermare, è opportuno esaminare l’elenco delle opzioni e lasciare intatti i dati non chiaramente identificati come transitori scaduti.
I transitori non sono sempre un problema di prestazioni. Se il database cresce rapidamente dopo la pulizia, la causa può essere un plugin che genera chiavi temporanee senza scadenza corretta o che salva quantità eccessive di dati nella tabella wp_options.
Come svuotare i commenti già presenti nel cestino
I commenti cestinati hanno lo stato trash nella tabella wp_comments. Finché non vengono eliminati definitivamente, occupano spazio insieme ai relativi metadati, anche se non vengono mostrati nelle pagine pubbliche.
Dal pannello WordPress è possibile aprire Commenti, filtrare lo stato Cestino, selezionare i commenti e usare l’azione Elimina definitivamente. Questa procedura è adatta a pochi elementi e permette di controllare manualmente eventuali commenti spostati nel cestino per errore.
Con WP-CLI è possibile elencare prima gli ID dei commenti cestinati:
wp comment list --status=trash --format=ids
Dopo il controllo, gli ID possono essere eliminati definitivamente:
wp comment delete ID_COMMENTO_1 ID_COMMENTO_2 --force
Il comando wp comment delete elimina anche i metadati associati attraverso le funzioni di WordPress. È preferibile non cancellare direttamente righe dalla tabella wp_comments, perché una query SQL non gestita correttamente può lasciare record orfani in wp_commentmeta o ignorare le azioni eseguite dai plugin.
WordPress può svuotare automaticamente alcuni contenuti cestinati tramite il cron interno. La costante EMPTY_TRASH_DAYS nel file wp-config.php permette di definire dopo quanti giorni svuotare il cestino:
define( 'EMPTY_TRASH_DAYS', 7 );
Il valore si applica ai contenuti gestiti dal cestino e deve essere scelto in base alle esigenze editoriali. Impostare un periodo breve riduce la crescita del database, ma lascia meno tempo per recuperare un commento o un contenuto cancellato accidentalmente.
Dopo la pulizia, è possibile ottimizzare le tabelle dal pannello di gestione del database dell’hosting, come phpMyAdmin, usando l’operazione Ottimizza tabella. Questa operazione non sostituisce la cancellazione dei dati e deve essere eseguita solo dopo il backup, perché un’interruzione durante la manutenzione può causare problemi alle tabelle.
Per un controllo più ampio si può consultare la documentazione ufficiale dei comandi WP-CLI, verificando sempre il contesto del sito, il prefisso delle tabelle e l’eventuale presenza di WordPress multisito. Una pulizia periodica delle revisioni, dei transitori scaduti e dei commenti cestinati aiuta a ottimizzare database WordPress senza intervenire sui contenuti pubblicati.
Potrebbe interessarti anche:
- Pulizia Database WordPress: Una Guida Completa con Advanced Database Cleaner
- Come correggere l’errore “Error establishing a database connection” su WordPress
- Velocizza il tuo sito: Installare e Configurare Memcached su una VPS Ubuntu per WordPress
- Come risolvere l’errore cURL 28 in WordPress con uno script nel functions.php
FAQ
No, la cancellazione delle revisioni rimuove solo le copie precedenti degli articoli. Il contenuto pubblicato resta disponibile, ma non sarà più possibile recuperare quelle versioni storiche.
È più sicuro eliminare soltanto i transitori scaduti. La cancellazione di quelli ancora attivi può costringere plugin e servizi a ricreare cache, sessioni o richieste temporanee.
Sì, i commenti cestinati restano nella tabella wp_comments fino all’eliminazione definitiva. La rimozione tramite WordPress elimina anche i metadati associati.
Non esiste un numero valido per ogni sito, ma conservare cinque revisioni per articolo è una configurazione equilibrata per molti blog. Siti editoriali con più autori possono richiedere un limite superiore.
No, WP-CLI e gli strumenti integrati in WordPress sono sufficienti per queste operazioni. Un plugin è utile soprattutto quando non si dispone di accesso SSH o si preferisce lavorare dal pannello amministrativo.
Altri articoli di questa serie:
- Autenticazione a due fattori WordPress per admin
- Disattivare API REST WordPress: accesso sicuro ai dati
- Immagini WebP AVIF WordPress: upload e conversione
- Schermata bianca WordPress: trova il colpevole nel log
- Configurare SMTP WordPress: email fuori dallo spam
- Staging WordPress locale e online senza rischi
