Come cambiare il prefisso delle tabelle di WordPress

In una installazione di WordPress, le tabelle del database hanno generalmente un nome che comincia con wp-: dal punto della sicurezza questo è un rischio perché un possibile malintenzionato sferra il suo attacco presumendo che le tabelle abbiano questo prefisso. Per questo motivo, quando si installa questo CMS è bene non utilizzarlo oppure, a installazione avvenuta, cambiarlo.

Pur essendoci almeno un plugin che faccia questa operazione (che io personalmente non ho testato: sicuramente funzionerà, ma io non so assicurarvelo), ho preferito procedere manualmente: come avrete capito da altri articoli, a me non piacciono gli automatismi quando si tratta di mettere mano a situazioni delicate e poi procedendo con le proprie mani si impara sempre. Dopo essermi documentato in rete e aver avuto conferma da più parti, ho cambiato anche io il mio prefisso wp- che mi portavo dietro da qualche anno. Vista la media complessità dell’operazione, mi scrivo quello che ho fatto e lo condivido con voi. Se avete deciso di seguire queste note personali, prestate la massima attenzione alle operazioni che fate perché lavorerete nel cuore di WordPress, dunque ogni responsabilità è vostra.

Fare un backup completo del database

Mi sembra ovvio e quasi superfluo dirlo: bisogna lavorare in serenità, specie quando si fanno operazioni del genere. Fatevi un bel backup e andate tranquilli. Se fate danni, potete ripristinare il database con questo file.

Mettete in pausa il blog

Anche se non vi sembra un’operazione necessaria, la reputo importante perché — se dopo aver modificato il file wp-config.php lo inviate al server e se non avendo ancora cambiato i nomi alle tabelle un visitatore dovesse accedere al blog — si ritroverebbe con l’interfaccia di installazione di WordPress (sempre che non abbiate cancellato il file install.php). Un bel problema! Non utilizzate quindi, in questo caso, plugin che rendano inaccessibile il blog, ma un intervento semplice ed efficace su .htaccess. ~~~In una mia pagina wiki spiego come farlo.~~~

Mettere in pausa il blog significa non far trovare il blog sottosopra ai vostri lettori, ma visualizzare una pagina statica (in quella pagina wiki c’è un esempio) dove li informate che ci state lavorando.

Modificate il file wp-config.php

Iniziamo con le operazioni di modifica vere e proprie. Aprite il vostro attuale file wp-config.php, che contiene le informazioni di base della vostra installazione. Cercate la riga

$table_prefix  = 'wp_';

e modificate quel wp_ utilizzando solo numeri, lettere e underscore _. Non ha importanza la lunghezza. Salvate il file.
Per questo tutorial, facciamo conto che abbiate scelto di usare il prefisso xs73_ per le tabelle.

A questo punto, se avete messo in pausa il blog, potete anche uploadare il file nel server, altrimenti non fatelo adesso.

Rinominate le tabelle nel database

Andate in phpMyAdmin e visualizzate il database della vostra installazione di WordPress. Dobbiamo cambiare adesso tutti i nomi delle tabelle: quel wp_ dovrà diventare xs73_.

Fate clic sul pulsante SQL e nel campo grande inserite questo comando:

RENAME TABLE wp_comments TO xs73_comments;

Come si vedrà, la sintassi di questi comandi è molto semplice da capire, per cui non la commento. Premete sul pulsante “Esegui”. Il gestore del database cambierà immediatamente il nome alla tabella e vi dirà che l’operazione è stata eseguita con successo.
Fate la stessa operazione per tutte le restanti tabelle, sia per quelle del core di WordPress che per quelle degli eventuali plugin. Le tabelle standard di WordPress sono 11; vi elenco qui tutte le righe da inviare una per una per il cambio del nome (non so dirvi se possono essere inviate insieme e occhio che ho reinserito anche la precedente riga che forse avete già inviato). Ricordatevi di modificarle in armonia col prefisso che avete scelto nel file wp-config.php:

RENAME TABLE wp_commentmeta TO xs73_commentmeta;
RENAME TABLE wp_comments TO xs73_comments;
RENAME TABLE wp_links TO xs73_links;
RENAME TABLE wp_options TO xs73_options;
RENAME TABLE wp_postmeta TO xs73_postmeta;
RENAME TABLE wp_posts TO xs73_posts;
RENAME TABLE wp_terms TO xs73_terms;
RENAME TABLE wp_term_relationships TO xs73_term_relationships;
RENAME TABLE wp_term_taxonomy TO xs73_term_taxonomy;
RENAME TABLE wp_usermeta TO xs73_usermeta;
RENAME TABLE wp_users TO xs73_users;

Ripeto: potrebbero esserci altre tabelle oltre quelle elencate: il nome va cambiato su tutte.

La tabella wp-options

Bisogna ora modificare qualcosa nella tabella xs73_options (la vecchia wp_options). Tornate alla visualizzazione del vostro database di WordPress e fate clic sul pulsante “Mostra” relativo a questa tabella. Scorrete l’elenco dei dati della tabella fino a vedere la riga wp_user_roles: fate clic sul pulsante di modifica (quello con l’icona di una matita) e cambiatene il nome da wp_user_roles a xs73_user_roles. Fate clic su “Esegui”.

La tabella wp_usermeta

Anche qui ritornate al database di WordPress e fate clic sul pulsante “Mostra” relativo alla tabella xs73_usermeta (la vecchia wp_usermeta). Qui le voci da cambiare sono di più, per cui faremo una ricerca per facilitarci il compito.

Premete su SQL in cima, cancellate l’eventuale esempio che troverete già inserito e incollate questa riga:

SELECT * FROM `xs73_usermeta` WHERE `meta_key` LIKE 'wp_%'

Dovrebbe restituirvi in basso il risultato con alcuni record il cui nome inizia col vecchio prefisso. Il numero dei risultati può variare, magari se avete qualche utente registrato.
Cambiate il valore di “meta_key” in tutte le righe togliendo wp_ e premettendo xs73_. Ad esempio la prima riga da wp_autosave_draft_ids diventerà xs73_autosave_draft_ids.

Inviate al server il nuovo file wp-config.php

Finito col database, se non lo avete ancora fatto prima, sostituite il file wp-config.php del vostro server con quello che avete modificato all’inizio.

Avete finito. Recatevi nel vostro blog e verificate che tutto funzioni come sempre.