[Base de donnée] Migrer votre site WordPress vers un autre domaine

Scolari-tres-impressionne-par-Robben

 

Salut à tous !

 

Il y a 2 ans, je vous offrais cet article

 

Aussi, je me suis rendu compte au fil des derniers WordPress migrés, que les modifications ne suivaient pas systématiquement ...

 

En effet !
Lorsque vous remplacez l'adresse de votre ancien site, par un nouveau, les modifications ne sont pas prises au niveau des données sérialisées !

C'est-à-dire que lorsque vous avez dans votre base de données, un truc du genre :

s:11:"monsite.com";

Et que lorsque vous faites un remplacement ...

s:11:"monNouveauSite.com";

On constate que le changement a bien pris au niveau texte ...

SAUF

Que nous sommes sur de la donnée sérialisée !
Donc le 11 n'est pas là pour faire jolie ...
Il représente le nombre de caractère ...
monsite.com contient 11 lettres
monNouveauSite.com en contient  18 !

 

On devrait donc avoir (si l'on souhaite que ça marche) ceci :

s:18:"monNouveauSite.com";

 

Donc voilà ..
Si vous souhaitez modifier le domaine de votre WordPress :

Il faut tout d'abord faire une extraction de la base de  données (phpmyadmin ou mysqldump)
Capture

Ensuite, j'ai réalisé rien que pour vous un script qui va faire le nécessaire : téléchargement

Ce fichier contient un code relativement court, qui va remplacer votre ancien nom de domaine par le nouveau. Il va également recalculer la taille des chaines de caractère des données sérialisées :

 

#!/usr/bin/php5
<?php 
/****************************************** 
*
* Migration Sql WordPress 
* by Dyrk.org 2015 - 2016 
* (c) Dave Hill 
* 
*******************************************/ 

$file = (isset($argv[1])) ? $argv[1] : ""; 
$newFile = "new_" . $file; 
$newSite = (isset($argv[3])) ? $argv[3] : ""; 
$oldSite = (isset($argv[2])) ? $argv[2] : ""; 
$synthax = "Synthax : " . $argv[0] . " file.sql oldSite.com newSite.com\n"; 
if (empty($file) || !is_file($file) || $argc != 4) 
          die($synthax); 
$x = 0; 
$dump = str_replace($oldSite, $newSite, file_get_contents($file)); 
if (preg_match_all('/s\:([0-9]{0,20000})\:"(.*?)";/s', $dump, $match)) { foreach ($match[0] as $k => $v) {
        $original = $v;
        $nsize    = strlen($match[2][$k]);
        if ($nsize != $match[1][$k] && strstr($original, $newSite)) {
            $temp = serialize($match[2][$k]);
            $dump = str_replace($original, $temp, $dump);
            ++$x;
        }
    }
}

file_put_contents($newFile, $dump);
echo "generated file : $newFile - $x modification(s)\n";
?>

Bref dans votre terminal ...
Saisissez ceci :

wget https://dyrk.org/divers/migrationWordpress.php.txt
mv migrationWordpress.php.txt migration.php
chmod +x migration.php

 

Vous n'aurez plus qu'à envoyer à votre script, le chemin vers votre fichier sql, l'ancien domaine, le nouveau domaine

./migration.php  chemin/vers/le/fichier.sql   anciendomaine.com nouveaudomaine.com

Et hop le script vous générera un nouveau fichier sql !

Plus qu'a supprimer les tables de votre base de données, puis à réimporter le fichier nouvellement généré !!!!

 

Screenshot - 17022016 - 110915

Partagez ce contenu

Laisser une réponse

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