Wordpress Seiten nach Jekyll umziehen

Momentan bin ich dabei einige meiner Webseiten von Wordpress nach Jekyll zu migrieren. Wer Jekyll noch nicht kennt: hierbei handelt es sich um einen in Ruby geschriebenen statischen Seitengenerator, welcher u.a. die GitHub Pages antreibt und damit einen sehr starken Partner im Rücken stehen hat!

Mit Jekyll wird nicht nur die Seite erheblich schneller, da der Webserver nur noch Dateien ausliefern muss, man kann zudem seinen Content in Markdown schreiben, in Git verwalten und als Bonus beseitigt man gleichzeitig auch noch eine Menge (potentieller) Sicherheitslücken AKA Wordpress.

Vor der Freude liegt aber der Prozess des Seitenumzugs, welcher dankenswerterweise aber sehr einfach ist. Man muss nur seine Wordpress-Seiten in statische Dateien umwandeln, welche dann von Jekyll verarbeitet werden können.

Dazu erstellt man zunächst einen Dump seiner Wordpress Datenbank (speziell der Tabellen wp_postmeta, wp_posts, wp_term_relationships, wp_term_taxonomy, wp_termmeta, wp_terms, wp_users) und fügt diesen am besten lokal in eine neue Datenbank ein.

Danach erstellt man sich ein temporäres Verzeichnis und dort eine Datei namens Gemfile.

Der Inhalt der Datei Gemfile sieht wie folgt aus:

source "https://rubygems.org"

gem 'jekyll-import'
gem 'sequel'
gem 'unidecode'
gem 'htmlentities'
gem 'mysql2'

Das ganze installiert man nun via bundle install. Vorbereitung abgeschlossen!

Jetzt generieren wir noch die die Dateien via Bash Befehl (die vollständige Syntax könnt ihr unter https://import.jekyllrb.com/docs/wordpress/ nachlesen):

ruby -rubygems -e 'require "jekyll-import";
 JekyllImport::Importers::WordPress.run({
 "dbname" => "jekyll_import",
 "user" => "jekyll",
 "password" => "jekyll",
 "table_prefix" => "wp_"
})'

Alternativ:

  • wenn man eine Wordpress Multisite Installation nutzt (mit der Seiten ID 13)
  • statt HTML-Entities echte Umlaut nutzen will
  • keine Kommentare importieren will
ruby -rubygems -e 'require "jekyll-import";
 JekyllImport::Importers::WordPress.run({
 "dbname" => "jekyll_import",
 "user" => "jekyll",
 "password" => "jekyll",
 "table_prefix" => "wp_",
 "site_prefix" => "13_",
 "clean_entities" => false,
 "comments" => false,
})'

Und ein paar Momente später hat man einen _posts Ordner mit allen Blog Beiträgen und für jede Seite einen eigenen Ordner mit index.html in seinem temporären Verzeichnis liegen.

Vor hin an erstellt ihr dann Eure Jekyll Seite wie gehabt. Viel Spaß beim Nerd-Blogging!