Changer le préfix des tables avec wordpress
On va manipuler les bases de données d'un site wordpress (un ou plusieurs si vous partagez la même BD entre plusieurs sites). Avant de faire quoi que ce soit, faites un backup de votre base de données, et testez-le pour être sûr de pouvoir annuler vos opérations.
L'article se base sur la méthode 1 d'un poste disponible à l'adresse suivante: wpmyweb.com/change-wordpress-database-table-prefix.html
Il faut déterminer le préfix des tables utilisées, on l'obtient via la
valeur de la variable $table_prefix
dans wp-config.php
.
On récupère d'abord toutes les tables concernées dans une variable
$tables
:
tables=
où DBUSER
, DBNAME
et DBPREFIX
sont respectivement le nom d'utilisateur
qui a accès à la base de données, le nom de la BD ainsi que le préfix
des tables utilisé.
On renomme ensuite toutes les tables via l'instruction sql RENAME
.
Notons NEWPREFIX
le nouveau préfix souhaité. Pour tester notre code
avant de l'exécuter, on peut vérifier ce qu'il va réaliser:
while ;
do newname="NEWPREFIX"
done
Une fois le code sql approuvé, on peut l'exécuter:
while ;
do newname="NEWPREFIX"
|
done
Ce n'est pas tout, car wordpress hardcode le préfix dans des entrées de
deux de ses tables: options
et usermeta
.
Vous remplacez NEWPREFIX
par le nouveau préfix ci-après. Par exemple,
si NEWPREFIX
vaut wp2_
, on a: NEWPREFIXoptions
doit être remplacé par
wp2_options
. De même pour DBPREFIX qui équivaut à l'ancien préfix.
Lancez mysql via mysql -u DBUSER DBNAME -p
, et exécutez:
UPDATE `NEWPREFIXoptions` SET `option_name`=REPLACE(`option_name`,'DBPREFIX','NEWPREFIX') WHERE `option_name` LIKE 'DBPREFIX%';
UPDATE `NEWPREFIXusermeta` SET `meta_key`=REPLACE(`meta_key`,'DBPREFIX','NEWPREFIX') WHERE `meta_key` LIKE 'DBPREFIX%';