Migrer son blog Wordpress vers GitHub

Note
This article was last updated on 2023-03-02, the content may be out of date.

L’idée me trottait dans la tête depuis quelques mois environ: migrer mon blog de Wordpress vers un site basé sur Jekyll et hébergé directement sur Github. La date de renouvellement de ma souscription Wordpress arrivant à terme, je me suis décidé à franchir le pas. s

Github permet via son service Github Pages d’héberger des sites statiques (c.-à-d. pas de base de données derrière) en permettant d’associer son nom de domaine. Le certificat est automatiquement généré.

Pour avoir un look un peu sympa, j’ai donc mis en oeuvre les outils suivants:

Je vous conseille d’aller sur ce site. Tout est bien détaillé est c’est réalisable en quelques minutes seulement.

Sans surprise, c’est la partie la moins drôle. Il faut en résumé:

  • Exporter les données si vous êtes hébergé sur wordpress.com
  • Les ré-importer dans une instance locale
  • Les exporter au format Jekyll
  • Copier le contenu généré dans un nouveau site

Afin d’exporter les données et de les transformer, il faut d’abord exporter les données (articles + médias) de votre site Wordpress

Vous obtiendrez deux archives: la première pour les articles, la deuxième pour les médias.

Création d’une instance Wordpress pour convertir les données au format Jekyll

Pour faire simple, j’utilise Docker pour monter une architecture Wordpress sur mon poste.

Il faut pour ça créer un fichier docker-compose.yml et insérer le contenu suivant:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

Ensuite, vous aurez à lancer la commande suivante:

1
docker-compose up

Une fois lancé, vous aurez à une instance Wordpress via cette URL : http://localhost:8000

Ensuite, il faut installer l’extension jekyll-exporter. La procédure peut prendre un peu de temps.

Une fois effectuée, vous aurez une archive ZIP contenant un site Jekyll avec les images et articles associés.

En attendant que ça se termine, j’ai crée un site jekyll avec le starter du thème minimal mistakes.

J’ai ensuite copié les articles (répertoire /_posts) et images (/assets/img). Au premier lancement des commandes suivantes:

1
2
bundle install
bundle exec jekyll serve

J’ai eu quelques erreurs. J’ai donc eu à nettoyer les fichiers via des recherche/remplace dans un éditeur

Par exemple, j’ai supprimé les références author et layout

1
2
author: admin
layout: post

J’ai également ajouté pour certains articles une image pour le teaser

Exemple:

1
featuredImagePreview: /assets/images/2021/07/rest-book-architecture.png

Pour me faciliter la vie dans les URLS et liens en tout genre, j’ai gardé le format des URLS de Wordpress. Pour que ça soit le format par défaut de Jekyll, il faut modifier le paramètre permalink dans le fichier _config.yml

1
permalink: /:year/:month/:day/:title/

J’utilisais une petite spécificité de Wordpress: la création d’un flux RSS pour un tag donné. Pour le mettre en place dans Jekyll, il faut configurer le plugin jekyll-feed avec les propriété suivantes:

1
2
feed:
  tags: true

J’ai sans doute oublié quelques renommages/suppressions réalisés ici et là. Néanmoins, le principal est évoqué dans cet article.

Il ne vous reste plus qu’à éplucher la documentation du thème et de jekyll pour finaliser l’ installation de votre nouveau site.