WordPress : Migrer un site en ligne vers une installation locale

Partager cet article

Temps estimé pour la lecture de cet article : 16 min

Quand vous avez un site internet, il est toujours pratique de pouvoir ce dernier en local, ça évite de casser la production quand vous voulez faire des tests ^__^. Oui mais voilà avec un CMS commme WordPress, ce n’est pas aussi facile que from scratch. N’ayez craintes c’est quand même plutôt simple à faire, nous allons voir comment.

Export de la base de données

La première chose à faire, c’est de se rendre sur le phpmyadmin de votre hébergeur (ou tout outils du même genre vous permettant de gérer votre base de données) et d’effectuer une backup de votre base de données. Sous phpmyadmin, une fois connectée, il ne vous reste plus qu’à aller dans Exporter, vous devriez arriver ici :

wordress-online-to-localhost-phpmyadmin

Choisissez le format sql puis cliquez sur exécuter, vous allez alors récupérer un fichier .sql du nom de votre base de données. Maintenant, on est prêt pour la seconde étape.

Mise à jour de la base de données locale et modification du fichier wp-config.php

Allez en local sur votre phpmyadmin et importez le script sql que vous venez de télécharger. Attention, généralement pour un gros site sous WordPress, la taille du fichier .sql que vous allez récupérer peut dépasser les 2 Mo, il vous faut alors augmenter la limite possible pour importer un script, je vous laisser donc suivre un tutoriel que j’ai écrit précédemment.

wordress-online-to-localhost-import

Une fois que vous avez votre base de données disponible en locale, il faut changer quelques données, en effet par défaut WordPress enregistre lors de l’installation, l’url de votre site, donc si on veut que ce dernier nous redirige sur la bonne page, il va falloir effectuer quelques modifications :

UPDATE wp_options 
SET option_value = replace(option_value, 'http://borntocode.fr', 'http://localhost/borntocode') 
WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts 
SET post_content = replace(post_content, 'http://borntocode.fr', 'http://localhost/borntocode');
UPDATE wp_posts 
SET guid = replace(guid, 'http://borntocode.fr','http://localhost/borntocode');
UPDATE wp_postmeta 
SET meta_value = replace(meta_value,'http://borntocode.fr','http://localhost/borntocode');

Ici, vous devez donc remplacer l’url d’origine de votre site, dans mon cas, je remplace borntocode.fr, par une valeur locale, ici localhost/borntocode.

Enfin, il ne nous reste plus qu’à mettre à jour le fichier wp-config.php de WordPress qui contient toutes les informations à propos de votre connexion à la base de données.

define('DB_NAME', 'borntocode');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

Regardons que modifier et comment.

  • DB_NAME, c’est tout simplement le nom de votre base de données locale.
  • DB_USER, le nom de l’utilisateur capable de modifier et intéragir avec la base de données, généralement par défaut, c’est l’utilisateur root.
  • DB_PASSWORD, le mot de passe de l’utilisateur
  • DB_HOST, le nom de l’hôte, si vous adaptez d’un site en ligne, il faut parfois le modifier par localhost

Changement des permaliens

Enfin, il se peut qu’il y ait encore quelques problèmes de redirection, en cliquant sur un article vous pourriez vous retrouver avec une erreur 404, afin de corriger cela, il suffit de réecrire le fichier .htaccess. Pour le faire facilement, on se connecte dans l’administration, puis Réglages => Permaliens. Changez le type de lien par défaut pour « Simple ». Enregistrez. Et enfin, on remet sur celui désiré, généralement sur « nom de l’article ».

wordress-online-to-localhost-permalink

Il se peut que vous ayez aussi besoin de redonner au groupe www-data de apache, les bons droits afin de pouvoir effectuer les redirections par exemple, un simple :

sudo chown -R www-data:www-data borntocode/

Et voilà, vous pouvez maintenant faire des tests en local sans casser la production :p !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *