WordPress : Migrer un site en ligne vers une installation locale

Partager cet article

Temps estimé pour la lecture de cet article : 18 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, 'https://borntocode.fr', 'http://localhost/borntocode') 
WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts 
SET post_content = replace(post_content, 'https://borntocode.fr', 'http://localhost/borntocode');

UPDATE wp_posts 
SET guid = replace(guid, 'https://borntocode.fr','http://localhost/borntocode');

UPDATE wp_postmeta 
SET meta_value = replace(meta_value,'https://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 !

Edit du 03/02/2021 pour FORCE_SSL_ADMIN

Petit information qui pourrait vous intéresser, j’ai activé le SSL sur toute les pages d’administration de mon wordpress. Oui, mais voilà si justement vous faites la migration, il faut penser à désactiver l’option sinon vous n’aurez pas accès à la page d’administration. Il vous suffit d’éditer le fichier wp-config et de désactiver l’option, comme ceci :

define('FORCE_SSL_ADMIN', false);

Voilà, petit truc tout bête mais qui peut rendre fou 😉

8 comments

  1. Je suis novice merci en tout cas, je suis juste bloqué après l’étape d’importation de la base de donnée qui s’est bien passée. Pour la suite j’ai bien compris qu’il fallait modifier l’url d’origine du site mais je ne sais pas exactement dans quel fichier. En sachant qu’à cette étape j’ai installer MAMP ok, mais pas encore wordpress en local… dois je modifier les fichiers avant et si oui par quel accès ..:/ merci

    • Alors, pour changer l’url d’origine du site, c’est toujours dans phpMyAdmin. Tu commences par sélectionner la base de données que tu viens d’importer. Ensuite, tu cliques sur le second onglet « SQL ». Tu copies , colles les 12 lignes de code que j’ai mis dans l’article (UPDATE wp_options…), en adaptant à l’url de ton site. Enfin, tu cliques sur go pour exécuter les commandes SQL. Si, tout s’est bien passé tu devrais avoir x lignes de modifiées. Et c’est bon, tu peux passer à la suite du tutoriel. Si ça peut t’aider un tutoriel en anglais avec quelques screenshots: https://www.siteground.com/tutorials/phpmyadmin/query/. Bon courage !

  2. bonjour et merci pour le tuto
    cependant j’ai un peu de mal a suivre. je suis a l’etape ou il faut mettre a jour wp-config.php mais je ne le trouve nulle part.

  3. Bonjour,
    Je me permet de revenir apres une longue absence. Je suis allé chercher le fichier wp-config.php. et voici ce que j’avais à l’interieur :
    /** Nom de la base de données de WordPress. */
    define( ‘DB_NAME’, ‘pizzeria’ );

    /** Utilisateur de la base de données MySQL. */
    define( ‘DB_USER’, ‘root’ );

    /** Mot de passe de la base de données MySQL. */
    define( ‘DB_PASSWORD’,  » );

    /** Adresse de l’hébergement MySQL. */
    define( ‘DB_HOST’, ‘localhost’ );

    /** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
    define( ‘DB_CHARSET’, ‘utf8mb4’ );
    /**
    * Type de collation de la base de données.
    * N’y touchez que si vous savez ce que vous faites.
    */
    define( ‘DB_COLLATE’,  » );

    Cependant lorsque je veux ouvrir mon site j’ai une erreur 404. Je ne comprends ou j’ai pu faire une erreur, si j’en ai fais une.

  4. Bonjour,

    J’ai essayé de changer les douze lignes et j’ai ce messages d’erreur :

    Erreur
    Requête SQL : Copier

    UPDATE wp_options
    SET option_value = replace(option_value, ‘https://coiffure-nathalie.cciopenlab.fr’, ‘http://localhost/coiffure’)
    WHERE option_name = ‘home’ OR option_name = ‘siteurl’
    MySQL a répondu : Documentation

    #1146 – La table ‘coiffure.wp_options’ n’existe pas

    Qu’est-ce que je dois faire ? Je suis novice.
    Merci.

    • Bonjour Nathalie,

      Lorsque tu arrives sur phpmyadmin, commence par sélectionner la base de données en question que tu veux modifier. Tu auras alors le listing de toutes les tables de ton WordPress.
      Tu peux alors retrouver une table qui se termine par pré-fixe_options. Il faut savoir qu’à l’installation de WordPress on peut changer le pré-fixe par défaut qui est « wp_ » par celui de notre choix.
      C’est pour cela que le nom de la table peut-être légèrement différent que dans le tutoriel. Une fois, le nom de ta table trouvée, remplace juste par celui-ci dans la requête.
      Donc par exemple dans ton cas, si le préfixe est « coiff_ », ça te ferait quelque chose du genre:


      UPDATE coiff_options
      SET option_value = replace(option_value, ‘https://coiffure-nathalie.cciopenlab.fr’, ‘http://localhost/coiffure’)
      WHERE option_name = ‘home’ OR option_name = ‘siteurl’

      Si tu as bien sélectionné ta base de données au début tu n’as pas besoin d’écrire « coiffure. », c’est inutile.
      Voilà en espérant que ces précisions t’aideront pour résoudre ton souci.
      Bon courage !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.