Conseils pour réussir sa migration de WordPress vers PluXml

kowalskykowalsky Membre
5 mai modifié dans Entraide
Édit du 01/04/2016 : ces conseils ont été rédigés lors d'une migration de WordPress v4.x vers la version 5.4 de PluXml et peuvent ne plus être d'actualité avec la nouvelle version 5.5 de PluXml ou une version plus récente de WordPress.

///

Bonjour,

après avoir passé un peu de temps dernièrement à préparer la migration de mon site et pour y avoir rencontré quelques soucis que j'ai pu tous résoudre, je vous livre mes conseils pour réussir une migration de WordPress vers PluXml.

[h]Préalable[/h]

Il faut savoir faire fonctionner un serveur local (à l'aide de WAMP sous Windows, MAMP sous OSX ou en natif sous Unix).

[list=*]
[*]Y installer une instance de WordPress de version identique à celle de son site web[/*]
[*]Y installer une instance de la dernière version de PluXml[/*]
[*]Récupérer le script [del]wp2pluxml[/del] wp2pluxml-master.zip (master du 12 juin 2014) pour la conversion et l'installer dans l'instance locale de PluXml[/*]
[/list]

[h]La préparation[/h]
  1. Charger le thème par défaut de WordPress sur son site web
  2. Faire une sauvegarde complète de la base SQL de son site web (j'utilise l'extension WP-DB-Backup pour cela, qui me permettait également de faire facilement mes sauvegardes hebdomadaires) et l'importer sur son instance locale de WordPress.
  3. Charger le thème habituel de son site web. (C'est la dernière action que l'on effectuera sur le site web avant la migration finale. Toute la suite se passe désormais sur le serveur local)
  4. Sur le serveur local, rechercher à l'aide de PHPMyadmin dans la table "wp_options" (ou équivalent si vous aviez changé par sécurité le nom de la base de donnée de votre site) les valeurs "siteurl" et "home" pour remplacer l'URL du site web par celle de son instance locale de WordPress (il y a de forte chance que ce soit par http://localhost/wordpress/)
  5. Comme indiqué dans le Wiki de wp2pluxml, installer l'extension Advanced Export for WP & WPMU sur son instance locale de WordPress car la fonctionnalité d'export intégrée de WordPress ne permet pas de réussir en l'état un import vers PluXml (vous obtiendrez l'erreur #385 Le tableau $items des catégories est vide).

La partie facile de la préparation est finie, maintenant attaquons nous à la partie chronophage qui demandera quelques concessions.

Depuis le tableau de bord de son instance locale de WordPress :

[list=*]
[*]éditer toutes les URL des catégories pour les rendre uniques si l'on désire par la suite utiliser le plugin MyBetterUrls (j'ai simplement rajouté le préfixe "cat-") [/*]
[*]éditer tous les articles privés, ou protégés par un mot de passe, et leur assigner une nouvelle catégorie distincte pour les retrouver facilement après la conversion[/*]
[*]assigner une nouvelle catégorie distincte aux articles à l'état de brouillon pour les retrouver facilement après la conversion, et les publier[/*]
[*]éditer les articles multi-catégories et n'en garder qu'une seule par article (la principale selon vous) sinon lors de la conversion ce sera la première catégorie par ordre alphabétique qui sera gardée (partie réellement chronophage si vous êtes adeptes des articles multi-catégories comme moi)[/*]
[*]modifier le répertoire utilisé pour les médias (par défaut ceux-ci se trouvent dans le répertoire "wp-content/uploads") et indiquer à la place "data/medias", le répertoire par défaut des médias de PluXml. Cela évitera d'avoir à éditer manuellement tous les liens par la suite. :)[/*]
[/list]

La préparation est finie, maintenant attaquons nous à la conversion.

[h]La conversion[/h]

Il est temps de préparer l'export de son instance locale de WordPress.
  1. Depuis le tableau de bord, allez dans Outils -> Advanced Export
  2. Modifier les options suivantes :
    [list=*]
  3. Pour "Restrict Content", choisir "Posts" ;
  4. Pour "Restrict Status", choisir "Published" ;
  5. Pour "Include Blog Tag/Category Terms", choisir "Categories".
[/*]
[*]Cliquer sur le bouton d'export et enregistrer le fichier XML dans le répertoire "wp2pluxml" de son instance locale de PluXml.[/*]
[*]Ouvrir son navigateur et rentrer l'URL de l'instance locale de PluXml, puis aller sur la page de "wp2pluxml" (il y a de forte chance que ce soit http://localhost/pluxml/wp2pluxml/)[/*]
[*]Suivre les instructions pour lancer la conversion et croiser les doigts.[/*]
[/list]

[h]La finalisation[/h]

Une fois dans la partie administration de PluXml il est possible qu'un ou plusieurs articles n'aient pas d'identifiants, affichent un "//" pour la date et ne soient pas éditables. Cela est dû à un bug du script wp2pluxml, mais il existe une solution simple pour corriger cela : ouvrir le fichier "wp2pluxml.log" qui recensera le ou les articles en erreur (#77 Erreur lors de l'ouverture du fichier ../data/articles/0001.draft,001.001.201508170043..xml), puis les rechercher dans le répertoire "/data/articles/".

Deux cas se présentent :

[list=*]
[*]lorsque la partie terminale du nom du fichier est du type "12345..xml", il faut mettre du texte entre les 2 points avant l'extension xml : "12345.text.xml".[/*]
[*]lorsque la partie terminale du nom du fichier contient un ou plusieurs caractères spéciaux "12345.%9°c.xml", il faut supprimer ces caractères : "12345.9c.xml".[/*]
[/list]

Comme indiqué dans la solution, revenir dans l'administration de PluXml puis rafraîchir la liste des articles.

Et c'est pas fini :)
  1. Aller dans la liste des catégories et masquer les deux catégories créées lors de la préparation pour les brouillons et les articles privés/protégés.
  2. Ouvrir la liste des articles, faire un filtre sur ces deux catégories puis les mettre hors ligne, cela les passe à l'état de brouillon. Pratique pour retrouver ses brouillons, et astuce pour éviter que ne s'affichent ceux qui étaient privés/protégés. (Il existe des plugins pour rendre de nouveau les articles privés/protégés).

Et c'est [del]pas[/del] presque fini :) la conversion ne concernant que les articles, il ne faut pas oublier de créer des pages statiques sur PluXml en les nommant à l'identique de celles du site web, puis de les éditer et d'y faire un copier/coller depuis les pages du site web.

L'on peut désormais passer à la dernière étape.
[h]La migration[/h]
  1. Se connecter à son hébergement
  2. Optionnel mais recommandé : faire une copie de tout en local au cas où.
  3. Créer à la racine un répertoire "backup_WP" (par exemple) et un répertoire "backup_media" (par exemple)
  4. Déplacer l'ensemble des fichiers et sous-répertoires utilisé pour les médias (par défaut dans "wp-content/uploads") vers le répertoire "backup_media"
  5. Sauf en connaissance de cause, attention à ne pas effacer, déplacer ou remplacer votre fichier ".htaccess" principal (en faire une copie avant de passer au point suivant ne coûte rien surtout si celui-ci est personnalisé)
  6. Déplacer le reste des fichiers et sous-répertoires utilisé par WordPress vers le répertoire "backup_WP"
  7. Uploader tous les fichiers de l'instance locale PluXml vers le site web (à vous de choisir si c'est à la racine ou ailleurs).
  8. Déplacer l'ensemble des fichiers et sous-répertoires du répertoire "backup_media" vers "data/medias".
  9. Si vous souhaitez utiliser la réécriture d'urls, allez dans Paramètres -> configuration avancée, activez-la, puis désactivez-la et réactivez la de nouveau. Cela mettra à jour le fichier ".htaccess" et vous évitera de perdre du temps à essayer de comprendre pourquoi la page 2 est en erreur :)
  10. Optionnel mais recommandé : faire une sauvegarde complète de la base SQL du site web avant d'y faire un peu de ménage pour en retirer les anciennes tables utilisées par WordPress.

Cette fois c'est fini, le reste n'est plus que cosmétique.

[h]Epilogue[/h]

Et c'est ainsi que j'ai migré la totalité des 697 articles et 2426 des 2437 commentaires de mon ancien site sous WordPress (v4.x) vers PluXml (v5.4).

(oui j'ai prévu de rechercher les 11 commentaires manquants) ;)

///
Édit du 10/09/2015 : les 11 commentaires manquants étaient le résultat d'un bug affectant la conversion de l'horodatage des secondes par wp2pluxml, l'explication détaillée dans cette discussion.

Édit du 04/01/2018 : ajout d'un lien vers une copie du script, l'url d'origine n'existant plus :(

Réponses

  • GzygGzyg Membre
    Alors là, bravo. Chouette tuto. :)

    Je propose qu'il soit épinglé, ça peut inciter des envies de migrations... ]:D


    à plus,

    Gzyg
  • Super ton tuto, c'est clair :lol:
  • Merci kowalsky pour ce tutoriel très clair et très complet.

    Et si tu retrouves la raison pour laquelle il manque 11 commentaires, merci de nous tenir au courant !
  • mwolffmwolff Membre
    Bonjour,

    Le script a t'il été testé avec la version de pluxml 5.5 ? est-ce que les images à la une sont correctement importées ?
  • @mwolff : j'en doute fort vu que le script wp2pluxml ne semble plus maintenu depuis 2013.
Connectez-vous ou Inscrivez-vous pour répondre.