NKSSG
NakaKen Static Site Generator

WordPressから移行する

🚛

NKSSGを触ってみた結果、「WordPressから移行したい」と考える方がいるかもしれません。ここでは、WordPressから移行する際にやらなければいけないことなどをまとめていきます。

残念なお知らせ

WordPress から NKSSG に移行するのは簡単ではありません。ボタン一つでインポート、というわけにはいきません。特に、WordPress で次のような使い方をしている場合は、かなり大変です。

  • プラグインをたくさん使っている
  • テーマをいろいろカスタマイズしている
  • ショートコードをいたるところで使っている
  • functions.php に独自処理をたくさん追加している

どれかにあてはまる場合、NKSSG への移行は大変です。というよりは、WordPress から移行するのが難しい、というほうが正しいでしょう。どこに移行するにも、たくさん修正する必要があります。

移行用のおたすけツール

「ボタン一発」というわけにはいきませんが、WordPress にあるデータを NKSSG で使えるデータに "ある程度" 変換するためのおたすけツールを紹介します。ただの Python のコードですが。

NKSSG-WP-Import

上のリンクにある wp-xml-to-file.py で、WordPress の xml からデータを抽出してみます。

次の手順で使ってみましょう。

  • WordPress 管理画面から「ツール>エクスポート>すべて」で、xml をエクスポートする
  • 上のコードと xml を保存する
  • 実行する

実行は、python wp-xml-to-file.py {path-to-xml} としましょう。{path-to-xml} は xml ファイルへのフルパスを指定します。

メモ

WordPress から xml ファイルを取得するのが面倒な人は、日本語のダミーデータ にある xml ファイルで試してみてもかまいません。

上のおたすけツールを実行すると、xml ファイルと同じ場所に、以下の内容が抽出されます。

  • 投稿タイプ別・年別・月別の記事ファイル
  • サイトの情報(サイト名、サイトURLなど)
  • タクソノミーの情報(タグ、カテゴリー)
  • 使われている xml タグなどの情報

まず、post や page、カスタム投稿タイプ毎にフォルダができ、その下に記事ファイルが格納されます。本文だけでなく、タイトル、公開日時、URL、タグやカテゴリー、サムネイル、カスタムフィールドなども入っています。

draft など、非公開の記事は、わかりやすいように専用のフォルダを作ってその中に入るようになっています。

タクソノミーは、タグとカテゴリー以外に、カスタムタクソノミーの情報も取得するようにしています。

多くのデータを抽出していますが、モレがあるかもしれません。xml タグの情報などを見て、「これも必要だ」と思えば、コードに追加して取得するようにしましょう。

ここで得られたデータは、次のようにしてNKSSGで使用することを想定しています。

  • post や page フォルダ全体を、NKSSG の docs フォルダ下へ
  • サイトの情報、タクソノミーの情報を、nkssg.yml ファイルへ

もし、WordPress をブログとして使っていた場合は、これだけでも結構それなりに見れる形になっているはずです。nkssg serve で見てみましょう。

実際、ダミーデータをそのまま動かしてみると、レイアウトが少し崩れるところはあるものの、default テーマでもある程度表示されます。

おたすけツールの後にやること

先ほどのツールでは、WordPress から記事データを取得するところをやりました。これ以外に、少なくとも以下のことをやる必要があります。

  • メディアライブラリにアップした画像のダウンロード
  • テーマ内で使っている画像や CSS ファイルのダウンロード

xml には、画像データそのものは含まれていません。WordPress の画像データが入っているフォルダ /wp-content/uploads から、別途ダウンロードする必要があります。

メモ

上のおたすけツールで抽出したデータをもとに nkssg serve を実行したとき、サムネイルがきちんと表示されているかもしれません。ただ、その画像は、WordPress のサイトから直接表示しているものです。ダウンロードしておかないと、移行後には表示されなくなります。

また、以下の項目についても、どうするか考える必要があります。

  • WordPressで使っていたテーマ
  • WordPressで使っていたプラグイン
  • ショートコード
  • オブジェクトの埋め込み(Twitter や YouTube の URL だけを書いて使うもの)

これらは、NKSSG で自動でなんとかできるものではありません。追加で何か変換する処理が必要です。特に、ショートコードはよくわからないコードがそのまま表示されてしまいます。WordPress で記事を修正してからエクスポートするか、ツールで抽出したファイルを再変換するコードを書くしかありません。