Migration de PluXML vers WordPress

Migration de PluXML vers WordPress

it_numbersIl y a plusieurs mois déjà (début 2013 en fait, ça date!), j’ai décidé de changer le moteur de mon blog. Pour une série de raisons que je ne détaillerai pas maintenant, j’ai choisi de passer sous WordPress.

Et bien entendu, je me suis dit que ce serait intéressant de poster les étapes qui m’ont permis de réaliser cette migration. Mais comme d’habitude avec moi et mon blog, entre le moment où je veux écrire un article et le moment où je l’écris vraiment (et que je le publie!) il y a toujours un fameux délais. Quoi qu’il en soit, voici donc les explications concernant cette migration ! 😉

Comme toute migration, cela ne s’est pas fait sans petits pépins et à l’instar de Rome, cela ne s’est pas fait en un jour non plus.

Et cette petite migration se termine avec un « happy end » puisque le contenu que vous lisez est bien sous WordPress !

Pour plus d’infos, lisez la suite…

Alors, tout d’abord pour rappel, mon blog tournait précédemment sous PluXml.

La première chose a faire était de récupérer les fichiers XML des articles pour les traiter en local.

Ensuite, j’ai fait tourner un script php, trouvé sur le net qui permet de convertir les fichiers XML de PluXml vers du XML importable par WordPress.

En gros, l’idée c’est de passer par le format RSS (XML) que WordPress sait correctement parser et importer. Bon le script se contente de sortir le résultat sur la console donc il faut rediriger dans un fichier. Moi je fais ça en shell (Mac, mais c’est pareil sous linux) :

# php pluxmltowp.php -a ./repertoire_fichiers_plxml > mon_fichier_output.xml

Lorsque la conversion est faite, « y-a-plus-qu’à » importer le (gros) fichier XML produit dans WordPress. Pour cela, il faut se connecter dans l’admin du blog et sélectionner l’import d’articles.

Lorsque les articles sont importés, le plus gros est fait, mais il reste encore quelques détails. Les catégories ne sont pas importées correctement. J’aurais pu bidouiller le script php et recommencer tout avec les catégories, mais finalement, j’ai préféré les refaire à la main (je n’avais heureusement pas plusieurs centaines d’articles à classer).

Il y a aussi le problème des images dans les articles. La source pointe vers un répertoire qui faisait partie de la structure PluXML. Par facilité, j’ai conservé ce répertoire et les images qui s’y trouvent. Ainsi, elles s’affichent toutes correctement. Si nécessaire, pour les déplacer vers un autre répertoire (des médias de WordPress par exemple), il conviendrait de faire un remplacement de masse du répertoire dans le fichier XML d’import avant de l’utiliser.

Le commentaires aussi sont normalement importés, mais visiblement ils n’ont pas été pris avec. Heureusement pour ça que je n’avais pas des centaines de commentaires non-plus. Encore une fois, je me suis permis, vu le tout petit nombre, de les re-créer manuellement plutôt que de me lancer dans du développement pour ça. Je pense que ça ne doit pas être très lourd, le script en principe les traite, mais ça n’avait pas marché pour moi, donc je suppose qu’il y avait un petit bug quelque part.

Encore un détail, tous les articles sont importés sous l’utilisateur qui effectue l’import. Et comme c’est l’admin qui possède l’outil d’import, c’est lui qui devient l’auteur de tout ce contenu. Ca fait partie des choses que j’ai encore du modifier a posteriori. Pour ça, je me suis contenté d’un petit update de masse dans la DB mySql de WordPress pour changer l’auteur de tous mes articles. Ce n’est pas bien compliqué.

On commence par afficher les ID des auteurs (c’est moins pratique si on à plus de 50 auteurs, mais je doute que ce soit le cas ! ;-p ) :

SELECT ID, display_name FROM wp_users;

Bon, je ne rentrerai pas dans les détails, du résultat de cette commande. Sachez juste qu’il faut, ici, récupérer l’ID de l’auteur auquel on souhaite attribuer tous les posts.

Imaginons que l’ID de l’auteur soit ‘2’ et celui de l’admin ‘1’. Et bien, on procède à l’update de masse de cette façon :

UPDATE wp_posts SET post_author='2' WHERE post_author='1';

 

Voilà, c’est tout. J’en convient, le script que j’ai utilisé n’est pas parfait, mais c’est une très bonne base de départ et puis rien n’empêche les volontaires de le modifier et de l’améliorer.

A bientôt !

 

Source image : pixabay