J’ai été confronté récemment à deux sites web construits avec WordPress qu’il fallait faire migrer :
- Le premier depuis un hébergement gratuit sur WordPress.com vers un hébergement propre chez un hébergeur classique.
- le second qui ne changeait pas de serveur mais qui passait d’une adresse de prévisualisation proposée par l’hébergeur vers son domaine propre.
La principale difficulté a été de ne pas conserver, dans tous les contenus, les urls complètes incluant l’ancien serveur, ou l’adresse de prévisualisation. J’ai cherché un moment avant de trouver la solution.
1. Changement de serveur
Dans le premier cas, il fallait récupérer tous les contenus ainsi que le template depuis un hébergement gratuit proposé directement sur wordpress.com.
Administration > Outils > Exporter
Pour exporter les contenus et les médias, c’est assez simple car WordPress propose cette fonction de base, dans le menu Outils de l’administration du site. Dans ce cas, vous pouvez choisir d’exporter tout le contenu sans distinction, ou seulement l’une des parties du contenu (pages, articles, medias, photos, temoignages … ou encore chaque type de contenu qui peut exister sur votre site, selon les extensions que vous avez installées). Cette fonction va automatiquement vous faire télécharger des fichiers zippés qu’il vous suffiras ensuite de décompresser pour les importer sur votre nouveau site.
Pas d’exportation de theme depuis WordPress.com
Sur WordPress.com (c’est des malins), il est impossible d’installer d’autres extensions que celles proposées de base sans avoir un abonnement payant. Impossible donc d’installer un plugin comme «WP Clone Template» qui vous permettrais de télécharger le theme utilisé. Il vous faudra donc un peu de chance pour le retrouver sur internet, là d’où il vient initialement.
Attention à la taille des fichiers exportés
Attention, si vous avez beaucoup de contenu, il se peut que le fichier exporté fasse une grosse taille (plusieurs dizaines, voire centaines de Mo), qui pourrait être supérieure à la limite d’importation définie sur votre nouvel hébergement. Chez certains hébergeurs, il est possible de faire sauter cette limite pendant une durée limitée afin de pouvoir procéder normalement à l’import des données. Nous y revenons plus bas au moment de l’importation.
Commencez par installer un nouveau wordpress vide
La plupart des hébergeurs proposent, directement sur leur console d’administration, la possibilité d’installer un nouveau WordPress en quelques clics, très facilement.
Si ce n’est pas le cas, vous devez télécharger le fichier d’installation sur WordPress.org, le décompresser et le transférer en FTP sur votre nouvel hébergement. Vous devrez ensuite créer la base de données en notant bien son nom, son utilisateur et son mot de passe, pour l’indiquer pendant l’installation. Pour débuter cette installation, il vous suffit de taper l’adresse du nouvel hébergement, et le processus d’installation commencera automatiquement, et il n’est pas très compliqué.
Installez le theme et activez le
C’est la première chose à faire ! Si vous ne commencez pas par le theme, vous allez rencontrer un problême lorsque vous essayerez d’importer les contenus, qui contiennent peut être des types de contenus crées par le theme, que wordpress ne va pas reconnaître. N’oubliez pas d’activer le theme avant de passer à la suite.
Importez les données
Dans l’administration, vous allez maintenant utiliser la fonction Outils > Importer > WordPress. Cette option doit être installée mais cela est très facile, directement depuis la page Importer. Attention a bien décompresser le fichiers que vous avez téléchargé de l’ancien site avant de le transmettre à cette fonction. Une fois après avoir cliqué sur «Parcourir» pour ajouter le fichier, cliquez sur «Téléverser le fichier et l’importer» il y a encore une étape qui vous permet de définir l’utilisateur qui sera défini comme l’auteur du contenus, et très important : Importer les fichiers joints . En activant la case à cocher, l’importation se chargera d’aller chercher tout seul, sur l’ancien site, toutes les images et fichiers liés. Cela vous permet de ne pas avoir à les importer manuellement.
Attention, cette procédure peut prendre un certain temps, et buter sur la limite maximum d’ exécution de scripts ou la limite de taille d’import de fichier … qui, encore une fois, peuvent être temporairement augmentées chez certains hébergeurs.
Si ce n’est pas le cas, vous devrez modifier vous même la valeur dans les réglages du PHP, en espérant que vous aurez le droit de le faire. Dans le doute, contactez le support de votre hébergeur. Si ce n’est pas possible, vous allez rester bloqués … et serez obligés de vous poser la question si le choix de l’hébergeur était judicieux.
Sur ce point, notons que l’hébergeur helvétique Infomaniak propose ces options, et même si ce n’est pas le moins cher, il n’en est pas moins un des meilleurs d’Europe. Pour votre hébergement, cherchez plutôt la qualité, même si elle a un prix.
Editeur Classique VS Gutenberg
WordPress a vécu un changement majeur en 2018 avec l’arrivée, lors de la version 5, d’un nouvel éditeur de contenus nommé «Gutenberg» (en hommage à l’inventeur de l’imprimerie au 14ème siècle), qui a remplacé l’éditeur nommé «éditeur classique» en place jusque là. Même si de nombreux utilisateurs ont été frileux a passer a cette nouvelle solution, il s’avère à l’usage qu’il est très réussi, plus agréable à utiliser et surtout qu’il propose plus d’options.
Si votre ancien site a été réalisé avec l’éditeur classique et que votre nouveau site propose Gutenberg, il est judicieux d’ouvrir les pages avec et d’utiliser la fonction «Convertir le texte en blocs» disponible dans le petit menu en haut à droite montrant trois points en vertical. La page entière sera décomposée en blocs de texte, de titres, d’images, etc … Ne paniquez pas si cela vous arrive car la conversion est très efficace.
2. Previsualisation => Domaine propre
Dans le deuxième cas, j’ai du rapatrier le domaine d’un hébergement précédent, pour le lier au nouvel hébergement, sur lequel je travaillait depuis plusieurs semaines avec une adresse de prévisualisation fournie par l’hébergeur, à savoir http://monsite.preview.hebergeur.com
.
Après avoir vérifié que le domaine était bien actif sur le nouvel hébergement, ce qui peut mettre plusieurs heures une fois la modification demandée, j’ai commencé par aller modifier, dans l’ administration > réglages > général les champs «Adresse Web du WordPress» et «Adresse du site» pour indiquer désormais l’adresse du domaine mondomaine.ch
.
Une fois cette modification enregistrée, je me suis fait éjecter de l’administration du site, mais c’est normal ! L’authentification est liée au domaine, et j’affichait le domaine que je venait de spécifier, et plus l’adresse de prévisulisation. Je n’ai eu qu’a me reconnecter avec le même nom d’utilisateur et le même mot de passe.
Changer toutes les urls : un casse-tête !
Selon l’hébergeur de ce deuxième site, modifier les réglages aurait du suffire … et en fait, il n’en était rien, puisque, dans les contenus, toutes les urls d’images ou tous les liens à cliquer continuaient à arborer effrontément les anciennes adresses (http://monsite.wordpress.com
et http://monsite.preview.hebergeur.com
).
La solution ultime que j’envisageait était d’exporter toute la base de données MySQL dans un fichier texte (à savoir, faire ce que l’on appelle un «dump»), modifier les adresses avec la fonction «Rechercher et remplacer» de mon éditeur de code (Atom, pour ne pas le citer) avant de tout ré-importer dans la base de données. Etant déjà en production avec les deux sites, je trouvait cette méthode risquée car elle allait compromettre la bonne marche du site pendant quelques minutes, ce qui allait afficher de nombreuses erreurs aux visiteurs, ce que je voulais éviter.
La solution est venue de l’installation d’une extension :
L’extension «Better Search Replace»
Après quelques recherches sur internet, j’ai découvert l’extension «Better Search Replace», qui allait me permettre de faire la modification décrite juste au dessus, mais en direct dans la base de données MySQL, sans avoir à tout exporter et tout ré-importer ensuite.
Cela s’est bien passé, mais pas complêtement, car c’était sans compter sur des différences d’encodage entre le wordpress et la base de données.
%*!@$£? d’encodage !
Ahhhh …. le cauchemar de tout développeur : les questions d’encodage ! Il en existe des dizaines différents, et même si l’UTF8 deviens de plus en plus la norme (avec WordPress déjà, mais pas que), il arrive souvent de se retrouver avec ce genre de problêmes, surtout si Windows est passé par là.
En allant faire un tour dans la base de données, l’adresse à remplacer avec l’extension «Better Search Replace» que je cherchait, et que je croyait être http://monsite.preview.hebergeur.com/
était en réalité http%3A%2F%2Fmonsite.preview.hebergeur.com%2F
. En effet, les signes de ponctuation avaient été remplacés par des caractères encodés pour palier à la différence d’encodage entre la base de données et le wordpress.
Il m’a suffit de refaire fonctionner l’extension «Better Search Replace» avec cette nouvelle url contenant les caractères encodés pour arriver enfin à ce que toutes mes images et tous mes liens pointent enfin sur le nouveau domaine et que l’adresse de prévisualisation ne soit plus qu’un très mauvais souvenir.
Après plusieurs heures de recherche, et quelques cheveux en moins (mais je vous rassure, il m’en reste encore), tout était bien qui finissait bien, pour les deux sites et leur nouvelle vie dans leur nouvelle configuration.
Besoin d’aide pour migrer un WordPress ?
Si vous avez besoin d’aide pour effectuer une migration, n’hésitez pas à me contacter. Cela peut même se faire à distance.
photo © pxhere.com