§ 22. Come pulire e ottimizzare il database del WordPress

Probabilmente non tutti se ne rendono conto, ma col tempo il database di un sito costruito con il WordPress si riempie di tantissimi dati inutili. Se il problema viene trascurato per troppo tempo, la quantità e il peso complessivo di quei dati possono arrivare a rallentare o addirittura far «crollare» il sito. Non è un difetto del CMS utilizzato, ma un normale segno di vita di ogni progetto costantemente aggiornato. Ogni database ha bisogno della manutenzione periodica, quindi oggi vi racconto come pulirlo dai dati inutili e ottimizzarlo.
Il database di ogni sito su WordPress sicuramente conserva almeno i seguenti materiali: i testi degli articoli e delle pagine, le revisioni di quei testi, i commenti (compresi quelli contrassegnati come spam) e tutte le impostazioni dei temi e dei plugin (anche di quelli che non si utilizzano più). Come potete facilmente immaginare, una parte di quei dati è inutile, quindi la sua eliminazione libererà lo spazio prezioso (in tutti i sensi) sul database e renderà il sito più veloce.
La pulizia e l’ottimizzazione del database del WordPress possono essere eseguite in due modi diversi: attraverso una serie di query nella admin MySQL oppure con l’aiuto di uno dei plugin specializzati. Io ho sempre preferito il primo modo perché è più semplice (non richiede la ricerca e l’installazione del plugin), più veloce (ci vogliono pochi secondi a inserire ed eseguire le query necessarie) e più ottimale (non rende necessaria l’occupazione dello spazio con uno strumento che non serve tutti i giorni).
Di conseguenza, procedo subito a elencare e commentare tutte le query che vi serviranno.
Prima di tutto bisogna accedere al proprio MySQL. Il link si trova nella sezione «Database» del pannello di controllo del vostro hosting.
All’interno del MySQL, una volta che abbiamo fatto il login:
1) scegliamo il database sul quale vogliamo operare (dico scegliamo perché potrete averne più di uno);
2) clicchiamo sulla voce «SQL» nel menu orizzontale:

3) per sicurezza facciamo il backup del database sul quale vogliamo operare (per non perdere i dati utili nel caso di un errore). Clicchiamo dunque sulla voce «Esporta», selezioniamo il metodo di esportazione rapido e il formato SQL, poi clicchiamo su «Esegui». Aspettiamo la fine del download.

E ora torniamo alla voce «SQL» nel menu orizzontale (come nel punto 2) e vediamo di orientarci sulla pagina che abbiamo di fronte. Nella casella di testo verranno digitate/inserite le query. Per dare l’esecuzione alla query inserita cliccare sul buttone giallo «Esegui» (lo potete trovare facilmente a destra).
Ma la cosa ancora più importante da ricordare è il prefisso delle tabelle utilizzato. Per default il prefisso delle tabelle di WordPress è «wp_», ma voi o il vostro web developer potevate averlo cambiato (si tratta di una cosa molto frequente). Quindi state attenti alla corrispondenza tra i prefissi reali e quelli indicati nelle query utilizzate. Nel caso di non-corrispondenza, ovviamente, i prefissi vanno cambiati nelle query!
E ora, finalmente, passiamo ai fatti, utilizziamo queste benedette query.
1. Cancellare i vecchi plugin e i loro dati
Ovviamente si tratta dei plugin che non vi servono più. Nella tabella wp_postmeta è possibile trovare molti altri dati cancellabili con la stessa query.
Ecco il codice:

DELETE FROM wp_postmeta WHERE meta_key = 'META-KEY-NAME';

Al posto di META-KEY-NAME bisogna indicare le chiavi dei plugin in eliminazione (si trovano nelle tabelle del database).
2. Cancellare tutte le revisioni
Le revisioni dei testi (articoli e pagine) pubblicati su WordPress sono utilissimi durante la preparazione di un nuovo contenuto, ma dopo la pubblicazione della versione definitiva di un testo si trasformano nella spazzatura inutile.
È possibile cancellare tutte le revisioni accumulate nel database eseguendo una volta sola la seguente query:

DELETE FROM wp_posts WHERE post_type = 'revision';

3. Cancellare tutti i commenti con lo spam
Selezionare e cancellare lo spam manualmente potrebbe diventare una procedura lunga e noiosa. Ma lo possiamo fare velocemente eseguendo una sola volta la seguente query:

DELETE FROM wp_comments WHERE comment_approved = 'spam';

4. Cancellare tutti i commenti non confermati
I commenti non confermati si cancellano con la stessa facilità:

DELETE from wp_comments WHERE comment_approved = '0';

5. Cancellare tutti i tag non utilizzati
Potrebbero essere stati creati dei tag che poi non sono stati utilizzati in alcun articolo (oppure i relativi articoli sono stati cancellati). Quei tag si cancellano con la seguente query:

DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);

6. Cancellare i vecchi shortcode
A volte dopo l’eliminazione dei plugin nel database rimangono i relativi shortcode ormai inutili. Per eliminarli tutti va utilizzata la seguente query:

UPDATE wp_post SET post_content = replace(post_content, '[YOUR-SHORTCODE]', '' );

7. Cancellare i pingback e i trackback
Prima accertatevi di averli disabilitati nella vostra admin di WordPress, poi utilizzate questa query:

DELETE FROM wp_comments WHERE comment_type = 'pingback';
DELETE FROM wp_comments WHERE comment_type = 'trackback';

8. Cancellare le opzioni temporanee
Le opzioni temporanee permettono di creare il cache di una parte dei dati nel database. E il cache può assumere delle dimensioni notevoli. Possiamo pulirlo con questa query:

DELETE FROM wp_options WHERE option_name LIKE ('%\_transient\_%')

9. Ottimizzare le tabelle
Dopo avere eseguito tutte le query che ci interessano, possiamo anche ottimizzare le tabelle del database. Si tratta di una operazione utilissima e semplice.
Selezioniamo tutte le tabelle e scegliamo la voce «Ottimizza tabella» nel menu a tendina (some nella immagine).

Bene, abbiamo già fatto tutto. Ora il database è pulito e ben organizzato, quindi il nostro sito è più veloce.
Visto che ci è andato tutto bene, possiamo anche cancellare definitivamente dal nostro computer il file di backup creato all’inizio. Infatti, non ci serve più perché contiene un database contaminato da tutta l’immondizia digitale che abbiamo eliminato con le query. Ora, invece, possiamo fare il backup del database pulito: potrebbe tornarci molto utile nel caso di un eventuale guasto al server.
È tutto facile, vero?