Migrer un site WordPress
La copie d'un site confectionné avec WordPress n'est pas tout à fait triviale, étant donné que le domaine est codé en dur dans la base de données. Il ne suffit donc pas de copier l'arborescence de fichiers et la base de données tels quels. Il existe certes un certain nombre de plug-ins pour effectuer une telle opération, mais à mon humble avis, ce n'est pas une mauvaise idée de savoir chasser l'ours à mains nues dans ce cas de figure.
Archivage d'un blog
Dans l'exemple pratique ci-dessous, je copie les pages du site
blog.microlinux.fr vers archives.microlinux.fr.
La première phase de l'opération est triviale, et je ne rentrerai pas dans les détails :
-
Faire une sauvegarde de la base MySQL
microlinux-blog. -
Créer la base MySQL
microlinux-archives. -
Importer la base sauvegardée
microlinux-blogversmicrolinux-archives. -
Copier l'arborescence du blog vers l'hébergement
archives.microlinux.fren préservant les permissions de fichiers. -
Éditer
wp-config.phpet renseigner les paramètres de la base locale.
À partir de là, je dois opérer une série de modifications dans la base de données, pour remplacer toutes les URL codées en dur.
PHPMyAdmin vs. moniteur MySQL
La plupart des tutoriels utilisent PHPMyAdmin pour ce genre d'opération. Pour ma part, je préfère le bon vieux moniteur MySQL, qui fait tout aussi bien l'affaire.
La racine du site est fournie dans la table wp_options. Il faudra modifier
deux occurrences :
mysql> select option_name, option_value
-> from wp_options
-> where option_name = 'home'
-> or option_name = 'siteurl';
+-------------+----------------------------+
| option_name | option_value |
+-------------+----------------------------+
| home | https://blog.microlinux.fr |
| siteurl | https://blog.microlinux.fr |
+-------------+----------------------------+
2 rows in set (0.00 sec)
mysql> update wp_options
-> set option_value = 'https://archives.microlinux.fr'
-> where option_name = 'home'
-> or option_name = 'siteurl';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select option_name, option_value
-> from wp_options
-> where option_name = 'home'
-> or option_name = 'siteurl';
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | https://archives.microlinux.fr |
| siteurl | https://archives.microlinux.fr |
+-------------+--------------------------------+
2 rows in set (0.00 sec)
De manière similaire, on va procéder à un remplacement systématique de l'URL dans les autres tables de la base :
mysql> update wp_posts
-> set guid = replace ( guid,
-> 'https://blog.microlinux.fr',
-> 'https://archives.microlinux.fr');
Query OK, 2565 rows affected (0.08 sec)
Rows matched: 3433 Changed: 2565 Warnings: 0
mysql> update wp_posts
-> set post_content = replace ( post_content,
-> 'https://blog.microlinux.fr',
-> 'https://archives.microlinux.fr');
Query OK, 1816 rows affected (0.34 sec)
Rows matched: 3433 Changed: 1816 Warnings: 0
mysql> update wp_postmeta
-> set meta_value = replace ( meta_value,
-> 'https://blog.microlinux.fr',
-> 'https://archives.microlinux.fr');
Query OK, 1 row affected (0.03 sec)
Rows matched: 3572 Changed: 1 Warnings: 0
À partir de là, on peut se connecter à la copie conforme du site :
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.


