Wordpress to Jekyll

[ web ]

15 Jan 2014

В связи с частыми проблемами хостера и какой-то глючной темой с блокированием многих функций Wordpress’а, сначала появилась идея найти другого хостера.

Глянул бесплатных - красивыми доменными именами не привлекли, а рыться в возможностях стало лень - как результат появилась идея переезда на GitHub-Pages.

По счастью, Jekyll уже имеет необходимого импортера с WP, но он подключается только к базе, а соответственно теряются все метрики, стили, оформления и прочее, чем так славился WP.

“Чтож, не проблема”, подумал я и начал ваять заново, благо с Markdown уже знаком.

Для начала устанавливаем себе jekyll и создаем сайт.

gem install jekyll
gem install mysql # нужно только для моего способа
gem install jekyll-import
jekyll new myblog
cd myblog

После чего можно либо экспортировать WP в XML файл (Консоль управления - Инструменты - Экспорт), либо напрямую подключиться к базе данных и взять данные оттуда.

У меня были какие-то проблемы с импортом из XML, поэтому я решил попробовать способ с базой.

ruby -rubygems -e 'require "jekyll-import";
    JekyllImport::Importers::WordPress.run({
     "dbname"   => "<dbname>",
     "user"     => "<username>",
     "password" => "<password>",
     "host"     => "<hostname>",
     "prefix"   => "wp_",
     "clean_entities" => true,
     "comments"       => true,
     "categories"     => true,
     "tags"           => true,
     "more_excerpt"   => true,
     "more_anchor"    => true,
     "status"         => ["publish"]
      })'

Благодаря установленным флагам, jekyll сохранит все коментарии, которые были у записей (к сожалению, у меня не было, поэтому не знаю, как это выглядит), сохранит страницы категорий, если они были (в качестве тоже записей блога), а также применит категории и тэги из WP. Предпоследние флаги позволяют сохранить поведение “Read more…”, а последний присвоит всем записям статус опубликованных, чтобы они сразу были видны. При таком импорте в Jekyll не попадают черновики и нужно добавить их самостоятельно, если имеются.

После чего можно проверить работспособность, с помощью

jekyll serve