Ce tutoriel ne traite pas de l'installation d'un blog Ghost, uniquement de l'importation de vos articles et de vos images depuis WordPress. Pour importer vos commentaires, vous pouvez consulter l'article Isso
Tous ou presque utilisent le plugin wp développé par l'équipe de Ghost, baptisé tout simplement Ghost. Son utilisation est des plus simple, installez le plugin et rendez-vous depuis votre panel admin sur l'onglet Outils > Export to Ghost, puis exportez
Le dit plugin va exporter les articles wordpress au format .json
, en prenant soin de les adapter pour Ghost. Il ne vous reste plus qu'à importer le tout dans ghost depuis l'onglet labs. Seulement cette solution n'a pas fonctionné pour moi (erreur inconnue lors de l'import).
wp2ghost
Ce programme vous permet de convertir un fichier d'export WP .xml
en un fichier .json
formaté pour Ghost. Exactement donc comme le plugin WP édité par l'équipe Ghost, seulement cette fois-ci l'import semble fonctionner (pour moi). Peut-être une histoire de mise à jour.
git clone https://github.com/jonhoo/wp2ghost.git wp2ghost
Rentrez dans le répertoire wp2ghost et installez-le
cd wp2ghost && npm install
Parfait. Retournez maintenant sur le panel admin de WordPress et exportez vos articles via l'onglet Outils > Exporter. Sélectionnez uniquement les articles, pour les commentaires je vous invite à lire mon article sur Isso, un serveur de commentaires auto-hébergé.
node bin/wp2ghost.js domaintld.wordpress.xxxx-xx-xx.xml > ghost.json
Migrer les images
Toutes les solutions trouvées sur internet recourent à Cloudinary via son plugin WP. Le plugin même de Ghost vous le recommandent. Si vous optez pour cette solution, vos images seront alors hébergées sur un cloud au lieu de votre blog WP, le plugin Cloudinary se chargeant de mettre à jour votre db WP. Ainsi à l'export de votre db vers Ghost, les liens de vos images pointeront sur cloudinary, non plus votre blog WP.
Cette alternative ne me convient pas du fait que je préfère héberger mes images sur mon propre serveur et ne pas recourir à un service tiers. Fort heureusement j'ai trouvé une alternative on ne peut plus simple.
Exporter les images
À l'upload d'images l'arborescence des images est similaire entre WordPress et Ghost, tous deux vont organiser les images par année et par mois. Ainsi si vous uploadez l'image nommée image.png le 14 septembre 2015, celle-ci se retrouvera dans le dossier /2015/09/image.png
.
Ainsi dans votre article l'url de l'image sera http://domain.tld/wp-content/uploads/2015/09/image.png
pour wordpress (lien direct) et /content/images/2015/09/image.png
pour ghost (lien relatif).
Maintenant que nous savons ça, il est évident que migrer ses images sera facile.
La première chose à faire est donc de copier les différents répertoires d'uploads de Wordpress dans votre installation Ghost.
Contentez-vous de copier l'ensemble des répertoires contenus dans /wp-content/uploads/
vers /content/images/
avec la méthode qui vous convient le mieux, en utilisant la commande cp
ou tout simplement un logiciel de ftp avec le glisser-déposer. C'est vous qui voyez.
Éditer la base de données
Il va vous falloir mettre à jour dans la table posts
deux colonnes : markdown
et html
, cette dernière étant le rendu de la première (ce que voit l'internaute).
Dans mon cas je dois changer l'url d'origine http://domain.tld/wp-content/uploads/
par un lien relatif /content/images/
Avant d'éditer votre DB, arrêtez votre blog et faites un backup de celle-ci. Rendez-vous dans le répertoire où se trouver votre DB et tapez
cp ghost.db ghostDUMP.db
Ouvrez une console sqlite en indiquant la db de ghost
sqlite3 ghost.db
Dans la console sqlite, exécutez les requêtes suivantes en les adaptant à vos besoins
update posts set markdown = replace(markdown, 'http://domain.tld/wp-content/uploads/', '/content/images/') where markdown like '%http://domain.tld/wp-content/uploads/%';
update posts set html = replace(html, 'http://domain.tld/wp-content/uploads/', '/content/images/') where html like '%http://domain.tld/wp-content/uploads/%';
Attention! Songez que les liens directs sur vos articles depuis vos images ou les attachments ne seront pas édités de cette manière. À vous de réadapter et d'exécuter les requêtes SQL ci-dessus autant de fois qu'il le faudra pour mettre à jour votre DB. Si vous voulez scruter votre DB vous pouvez recourir à un explorateur de DB sqlite tel SqliteBrowser (osx).
Relancez votre blog (Supervisord?) et rendez-vous à l'adresse http://domain.tld/ghost/debug et importez votre db fraîchement éditée. Voilà, vous avez importez votre db et toutes les images. 💩