Image Image Image Image Image Image Image Image Image Image

Banlieusardises

Remonter

Haut

De Movable Type à WordPress: étape par étape

De Movable Type à WordPress: étape par étape
Martine Gingras

Chose promise, chose due: pour les amateurs de détails techniques, voici comment s’est déroulé mon passage de la plateforme de publication de blogue Movable Type 4 (MT4) à WordPress… Je réalise pleinement que 99,99% de ce texte est aussi incompréhensible qu’inutile au commun des mortels, mais si ça pouvait aider une seule autre personne à passer à travers ces difficiles étapes, eh bien… ce sera déjà énorme!

mt_wordpress

1. Installer WordPress.

Ce bout-là devrait aller rondement, d’autant plus que la plupart des hébergeurs permettent maintenant l’installation en un clic de cette populaire plateforme de publication de blogue.

2. Exporter le contenu depuis Movable Type.

À la base, c’est tout simple: il suffit d’aller sous l’onglet Tools, puis de choisir Export. L’outil ne conserve cependant pas le numéro identifiant chacun des billets, alors si vous utilisiez cet ID dans vos URLs (i.e. http://www.banlieusardises.com/loisirs/archives/001725.html), vous allez perdre tout votre référencement: il n’y aura aucun moyen de réacheminer correctement les visiteurs arrivant via un moteur de recherche ou un rétrolien d’un autre site vers vos anciens contenus.

Aussi, si vous avez une grosse base de données (pour vous donner une petite idée: j’avais plus de 1300 billets et près de 9000 commentaires), selon la configuration de votre hébergeur, le script risque de s’interrompre en cours d’exécution.

Voici comment régler ces deux problèmes…

a) Préserver les permaliens numériques.

Il faut modifier le fichier d’exportation pour que l’ID numérique soit associé à chaque billet. Le script d’exportation est géré par le fichier: lib/MT/ImportExport.pm

Repérez les lignes:

AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
BASENAME: <$MTEntryBasename$>

Et ajoutez:

ID: <$MTEntryID pad="1"$>

Maintenant, le script d’exportation va inclure l’ID numérique.

b) Exporter une grosse base de données.

Si vous avez une grosse BD, le script d’exportation risque fort de s’interrompre en cours d’exécution (dans mon cas, c’était autour de 19 Mo — il manquait plus du trois quart de mon contenu). Le plus simple est de… ne PAS utiliser l’outil d’exportation, mais de créer un nouveau gabarit qui reproduit le travail du script, mais que l’on peut facilement configurer pour exporter par blocs.

Voici comment faire:

i) Sous le menu Design -> Template: choisissez « Create index template ».

ii) Nommez le gabarit (Exportation) et dans le bloc de texte, mettez le code suivant:

<MTEntries lastn= »300″ offset= »0″>
AUTHOR: <$MTEntryAuthor strip_linefeeds= »1″$>
TITLE: <$MTEntryTitle strip_linefeeds= »1″$>
BASENAME: <$MTEntryBasename$>
ID: <$MTEntryID$>
STATUS: <$MTEntryStatus strip_linefeeds= »1″$>
ALLOW COMMENTS: <$MTEntryFlag flag= »allow_comments »$>
CONVERT BREAKS: <$MTEntryFlag flag= »convert_breaks »$>
ALLOW PINGS: <$MTEntryFlag flag= »allow_pings »$><MTIfNonEmpty tag= »MTEntryCategory »>
PRIMARY CATEGORY: <$MTEntryCategory$></MTIfNonEmpty><MTEntryCategories>
CATEGORY: <$MTCategoryLabel$></MTEntryCategories>
DATE: <$MTEntryDate format= »%m/%d/%Y %I:%M:%S %p »$><MTEntryIfTagged>
TAGS: <MTEntryTags include_private= »1″ glue= », »><$MTTagName quote= »1″$></MTEntryTags></MTEntryIfTagged>
—–
BODY:
<$MTEntryBody convert_breaks= »0″$>
—–
EXTENDED BODY:
<$MTEntryMore convert_breaks= »0″$>
—–
EXCERPT:
<$MTEntryExcerpt no_generate= »1″ convert_breaks= »0″$>
—–
KEYWORDS:
<$MTEntryKeywords$>
—–
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds= »1″$>
EMAIL: <$MTCommentEmail strip_linefeeds= »1″$>
IP: <$MTCommentIP strip_linefeeds= »1″$>
URL: <$MTCommentURL strip_linefeeds= »1″$>
DATE: <$MTCommentDate format= »%m/%d/%Y %I:%M:%S %p »$>
<$MTCommentBody convert_breaks= »0″$>
—–
</MTComments>
<MTPings>
PING:
TITLE: <$MTPingTitle strip_linefeeds= »1″$>
URL: <$MTPingURL strip_linefeeds= »1″$>
IP: <$MTPingIP strip_linefeeds= »1″$>
BLOG NAME: <$MTPingBlogName strip_linefeeds= »1″$>
DATE: <$MTPingDate format= »%m/%d/%Y %I:%M:%S %p »$>
<$MTPingExcerpt$>
—–
</MTPings>
——–
</MTEntries>

Sous Template options: Nommez l’output file (exportation1.txt) et choisissez publishing: Manually. Laissez « custom index template »; pas besoin d’associer à un fichier.

Note: Lorsque vous cliquez sur « Save and publish », les 300 derniers billets du blogue, leurs commentaires et leurs pings seront exportés dans un fichier texte nommé exportation1.txt

iii) Vous devrez refaire la manoeuvre pour exporter les 300 billets suivants. Pour ce faire, modifiez la première ligne (lastn signifie « les x derniers » et offset signifie « avec un décalage de x »). Donc nous avons déjà pris les 300 derniers sans décalage; pour les billets 300 à 600, il faut mettre:
lastn= »300″ offset= »300″
puis
lastn= »300″ offset= »600″
Changez aussi le nom du fichier d’exportation (exportation2.txt) et ainsi de suite jusqu’à ce que tous les billets soient exportés.

c) Modifier l’encodage vers UTF-8.

WordPress a besoin que les fichiers à importer soient encodés en UTF-8, alors que le jeu de caractères de votre fichier d’exportation est probablement… autre chose. Si vous les importez tels quels, tous les caractères spéciaux seront transformés en caractères encore plus spéciaux… Il faut donc convertir le fichier en format UTF-8. Vous pouvez le faire avec TextEdit (Mac), Dreamweaver, etc.

3. Importer le contenu sous WordPress.

Encore là, ça semble simple? Ça l’est, en autant que vous n’ayez pas de permaliens numériques. Mais si vous lisez ce billet, c’est probablement que vous en avez… et le script d’importation de WordPress n’importe pas, par défaut, cette donnée qu’on vient d’ajouter dans le script d’exportation de Movable Type.

Un blogueur a modifié le script d’importation pour permettre de récupérer les ID numériques: vous pouvez encore le télécharger sur Mudita Journal et suivre les indications sur le site.

Le hic: cette modification a été faite en 2006 (il y a trois ans); le script fonctionne encore sous la plus récente version de WordPress, mais il y a des bogues. Dans mon cas, aucun commentaire n’était importé!

Après m’être cassé la tête sur le problème et même avoir essayé de comprendre comment hacker le nouveau script d’importation, ma solution maison a finalement été toute bête: j’ai importé chacun de mes fichiers deux fois. Une première avec le script modifié (toutes les entrées sont importées avec l’ID), et une seconde avec le script original (qui associe miraculeusement les commentaires aux bons billets.

4. Vérifier l’«état» des billets.

Pour une raison mystérieuse, tous mes billets s’affichaient avec l’état « Dernière modification » plutôt que « Publié »… tout semblait normal quand je surfais sur mon nouveau site parce que j’étais identifiée en tant qu’administratrice. Toutefois, les visiteurs ne voyaient rien! Il a fallu changer l’état de chaque article.

Dans l’administration WordPress, on ne voit que 15 billets à la fois (qu’on peut modifier d’un seul coup); avec mes 1300 billets, j’aurais eu à refaire la même procédure 86 fois. No way! Pour voir plus de billets à la fois dans l’administration, il a suffit de modifier le script sous wp-admin/includes/posts (et de changer à la valeur de 15 à 50… ou plus).

5. Rediriger les visiteurs vers les nouvelles URLs.

Grâce au ID que l’on a importé (exemple 001234), tous les billets sont maintenant accessible à l’adresse:
http://www.banlieusardises.com/?p=1234

Il faut toutefois une solution pour qu’un visiteur arrivant à l’ancienne URL, comme par exemple:
http://www.banlieusardises.com/archives/001234.html
soit redirigé vers
http://www.banlieusardises.com/?p=1234

Les bidouilleurs pourront s’amuser dans le .htaccess (un fichier Apache qui gère les redirections), mais une solution plus simple consiste à installer l’extension WordPress Redirection. Il vous faudra faire quelques tests pour arriver à traduire vos anciennes URLs, mais ça reste plus simple que je jouer dans le .htaccess.

Par exemple, pour l’exemple indiqué plus haut, il aurait fallu configurer l’extension Redirection de la manière suivante:

URL SOURCE: /archives/([0-9][0-9][0-9][0-9][0-9][0-9]*).html
URL CIBLE: /?p=$1

Une bonne nouvelle: cela ne vous oblige nullement à utiliser la structure numérique dans les « Options des permaliens » de WordPress: même si vous choisissez une autre structure (par exemple, la populaire structure personnalisée /%postname% ), WordPress redirigera vos visiteurs à la bonne page.

Besoin d’un exemple pour clarifier la chose? Eh bien désormais, quand un visiteur arrivera par l’ancienne URL:
http://www.banlieusardises.com/archives/001234.html
… l’extension Redirect l’amènera vers:
http://www.banlieusardises.com/?p=1234
… que WordPress traduira par la bonne URL, selon votre choix de structure des permaliens, par exemple ceci sur les Banlieusardises:
http://www.banlieusardises.com/plants-de-tomates-rescapes

Ouf. Ce déménagement m’a fait redécouvrir, au moins pendant quelques jours, la petite «geekette» qui sommeille toujours en moi. Mais je ne suis vraiment pas fâchée de la laisser maintenant se rendormir pour retourner à mes casseroles!

Commentaires

  1. C’est fou le nombre de trucs qu’on apprend à faire en gérant un .com! Je me retrouve toujours à essayer de nouveaux trucs et à en apprendre de plus en plus!

    Bravo Martine, tu as su faire le tout comme une pro!

  2. Très impressionnant. Encore une fois, je m’en veux affreusement d’avoir choisi une plateforme fermée pour premier blog, mais encore plus, d’avoir resté dessus si longtemps sachant l’éventuel problème qu’un déménagement me causerait. Bravo pour tes trucs, je suis certaine que ça servira à quelqu’un un jour!

  3. C’est comme un vrai déménagement finalement: le moins souvent possible..!

    • C’est comme un vrai déménagement… où on s’évertue à transporter le frigo toute seule! Comme tu dis: LE MOINS SOUVENT POSSIBLE!

  4. Alors moi, ça m’aide ! (Ton article est donc utile si le critère d’évaluation reste d’aider au moins une personne…)

    Et j’en conclus que débuter sur WordPress est une bonne idée. Ouf ! Personnellement, j’ai encore un peu de mal à m’y retrouver, je ne sais même pas encore comment y ajouter un blogroll sans compromettre le Template original. Mon blogue doit concorder avec le reste du site et si je fais des bêtises mon programmeur me lancera des pierres. Mais bon, à force de tester, j’y arriverai, moi aussi je serai une geekette accomplie.

    • Ah, ben là, ma semaine est faite :) Bienvenue dans le voisinage, AlphaEvelyn, et bravo pour tes débuts sur le blogue d’Alphakid!

  5. Wow! Tout un travail de moine! Moi je suis trop néophyte pour bouger de Blogger pour le moment…iiiiicchhh! Mais à vous lire JulieJulie et toi, je commence à me sentir moins bien avec ma décision! :-S

    En tout cas, chapeau à toutes celles qui osent et qui apprennent au fur et à mesure!

    Bravo Martine pour ce billet!

  6. Oh ! que j’aurais aimé avoir tes conseils …à pareil date l’an passé ! ;-)

    Bravo pour la migration réussie ! :-)

    • Ben oui, j’ai vu pour les accents dans tes archives… tu n’avais pas converti vers UTF-8 avant l’importation?

  7. Allo Martine, est-ce qu’on peut savoir pourquoi tu as déménagé?

    • La raison du changement: WordPress bénéficie d’une communauté de développeurs d’extensions et de designers vraiment dynamique, chose qui fait cruellement défaut sur Movable Type.

      Il faut savoir que j’avais tout fait moi-même sur Movable Type (design, programmation des templates… TOUT!) C’était un travail considérable, et je m’étais dit: PLUS JAMAIS! D’autant plus que je savais bien coder en HTML, mais je n’ai jamais vraiment pris le temps de mettre mes connaissances à niveau pour faire du beau CSS.

      Lasse de mon design, j’ai cherché, au fil des années, de beaux templates pour Movable Type, sans succès. En décembre, Kim Vallée a parlé de WooThemes, et ça a fait « tilt » dans ma tête: enfin, des thèmes magnifiques!

      Depuis ce jour-là, j’ai pesé et soupesé les avantages et inconvénients de me lancer dans une migration… et après quelques tests sur WordPress, j’ai décidé que le jeu en valait la chandelle.

      • Allo Martine, tu as donc une bonne base d’informatique…! :-)

  8. Merci de m’avoir pointé ici Martine. Ma grosse gaffe, c’est de ne pas avoir pris mon propre nom de domaine au départ. Je ne me doutais pas de l’ampleur qu’il allait prendre, mon blog.

    Si un jour je change de plateforme, je devrai aussi changer de nom de domaine, et tous les liens entrants ne pourront être redirigés.

    Ça manque de souplesse, mais je vais rester prisonnier de Blogger pour un tit boutte. Faudrait quand même que je songe à me refaire un look un de ses jours. :)

    Je te félicite pour la migration. WordPress est une très bonne plateforme, ta template est superbe, mais surtout, ton contenu est impeccable.

    T’es la meilleure !