WordPress a eu la bonne idée d’écrire le chemin absolu des images (et plus) dans sa base de donnée.

Ce qui pose un gros problème lorsqu’on change de nom de domaine pour les raisons suivantes:

  • nouveau nom du site
  • changement de domaine ou sous-domaine
  • passage d’un domaine de test à un domaine de prod
  • etc.

Alors comment on fait pour se sortir de là ?

On récupère le dump de la BDD, on fait des replace et on ré-importe.

Vous trouverez les 4 requêtes sql à passer (ouf, pas si lourd finalement) dans les liens suivants:

# Changer l'URL du site
UPDATE wp_options
SET option_value = replace(option_value, 'http://www.ancien-site.com', 'http://www.nouveau-site.com')
WHERE option_name = 'home'
OR option_name = 'siteurl';

# Ou plus généralement
UPDATE wp_options
SET option_value = replace(option_value, 'http://www.ancien-site.com', 'http://www.nouveau-site.com');
# Changer l'URL des GUID
UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

# Changer l'URL des médias dans les articles et pages
UPDATE wp_posts
SET post_content = REPLACE (post_content, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

# Changer l'URL des données meta
UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'http://www.ancien-site.com','http://www.nouveau-site.com');

J’ai testé, ça marche ! 🙂