Webmaster Freelance Rhône-AlpesWebmaster Freelance Rhône-Alpes

par cyrille

Beaucoup de sites web sont développés sous WordPress.
Bien souvent lorsque le site est en cours de développement, il faut un nom de domaine non public pour que les clients et le développeur puissent travailler sur ce dernier. Surtout lorsqu’il s’agit d’une refonte d’un site déjà existant.

Lorsque tout est prêt on passe ensuite le site sous le nom de domaine définitif pour le rendre public et il faut alors changer le nom de domaine dans la configuration du site, mais aussi dans la base de données MySql.

Attention ! Ces requêtes fonctionnent sur les versions inférieures ou égales à WordPress 4.1.1 mais il n’est pas garanti que celles ci fonctionnent dans les prochaines versions du CMS.

Rendez vous donc dans PhpMyadmin pour commencer à changer le nom de domaine de votre site. Bien souvent les tables sont préfixées avec « wp_ » mais il se peut que vous ayez choisi autre chose, à vous de modifier les requêtes.

étape 1 : L’url générale du site

A vous de remplacer les noms de domaines dans la requête

UPDATE wp_options SET option_value = replace(option_value, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com') WHERE option_name = 'home' OR option_name = 'siteurl';

 étape 2 : Urls des GUID

Les GUID servent aux agrégateurs de news et aux lecteurs de flux RSS pour publier votre contenu.

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com');

étape 3 : Urls des contenus (images, textes, etc…)

Lorsque vous rédigez un article, que vous créez une page ou encore que vous créez des liens vers du contenu de votre site dans les menus sur wordpress, celui-ci enregistre le lien complet. Il faudra donc aussi modifier ces liens.

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com');

Dernière étape : Les meta post

Certaines templates utilisent des champs spéciaux pour rédiger des articles, ci ceux-ci contiennent des liens il faut aussi les bouger.

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.ancienne-adresse.com','http://www.nouvelle-adresse.com');

Autre cas : utilisation d’un CDN pour les images

Dans le cas d’utilisation d’un CDN pour les images vous devez changer les urls des images pour que celles-ci soient prises dans le serveur CDN. Voici donc la requête pour changer les liens des images seulement.

UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.ancienne-adresse.com', 'src="http://cdn.nouvelle-adresse.com');

… et pour les GUID des images

UPDATE wp_posts SET guid = REPLACE (guid, 'http://ancienne-adresse.com', 'http://cdn.nouvelle-adresse.com') WHERE post_type = 'attachment';

Récapitulatif des requêtes

Si vous êtes pressé et que vous savez ce que vous faites, voici le récapitulatif des requêtes à envoyer en SQL dans PhpMyadmin. Pensez bien à changer les urls dans le code SQL avant de l’envoyer.

UPDATE wp_options SET option_value = replace(option_value, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com'); UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.ancienne-adresse.com', 'http://www.nouvelle-adresse.com'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.ancienne-adresse.com','http://www.nouvelle-adresse.com');
cyrille
À propos cyrille
Requêtes Mysql pour changer le nom de domaine d’un site sous WordPress