Skip to content

Wordpress から Hugo に移行する / カスタム投稿タイプの記事も移行 / エクスポート失敗する

  • tips

📅 May 03, 2017

⏱️4 min read

はじめに

静的ジェネレーターの Hugo が話題ですね。 このブログを Wordpress で運用されていますが、移行された方が仰る通り、 毎回ユーザー名パスワード入れて管理画面にアクセスしての更新がだんだん億劫になってきました。 Wordpress やそのプラグインの更新、サーバー自体の管理も面倒になってきました。 仕事でもマークダウン使うようになってくるとなおのこと Hugo に魅力を感じますね。 そんなわけでまだ検討段階なんですが(つまり移行はまだ) お試しです。

移行プラグイン

で、Hugo の使い方やらなんやらは詳しく紹介している記事がもうたくさんあるので割愛。 Wordpress から移行する際にぐぐるとすぐ出てくるのがこのプラグイン

SchumacherFM/wordpress-to-hugo-exporter

これを使えば Wordpress の記事をマークダウンに吐き出してくれるらしい。 使い方は、

wp-content/plugins/ に置いて Wordpress 管理画面で有効化した後、 ツール のとこの Export to Hugo を選択するだけ。 これで問題なければ zip ファイルを保存するダイアログが出てきます。 (が、エクスポートに失敗?したり、zipファイル解凍で問題でたりすることあります、後述) で、保存した zip を解凍してみるわけですが、

カスタム投稿タイプの記事が出力されない!!

このプラグインはデフォルトの投稿タイプしか対応していないみたい。 そんなわけでプラグインのソースを見てみました。 以下の部分を修正するとカスタム投稿タイプも出力されます。

■hugo-export.php (90行目あたり)


function get_posts()
{
    global $wpdb;
    return $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ('post', 'page', 'XXX', 'YYY' )");
}

'XXX' のとこにカスタム投稿タイプ名を入れればOKです。 複数あるなら 'YYY' というように追加していけばよいです。 同じフォルダにまとめて出力されてしまうので、 カスタム投稿ごとに出力した方が良いかもですね。

これでカスタム投稿タイプの記事も出力されて万々歳。

問題1: wp-content/uploads でエクスポートに失敗する

このプラグインは記事に紐付いてる wp-content/uploads の中身も zip にしてくれます。 手間がはぶけるぜ〜

と、思いきや、さっき 後述 ってお話したんですが この wp-content/uploads のエクスポートの際に失敗して アクセス拒否とかページを表示できないといったページに飛ばされちゃうことがあります。 これについては、以下に issue 投げてる人いるように

Export fails if wp-content/uploads folder is missing #38

uploads をとりあえず uploads_ とかにリネームしたり 空の uploads フォルダを作ってからもう一度、エクスポート行うとうまくいったりします。 ですが、もちろん wp-content/uploads は出力されないです。 最低限マークダウンファイルだけ取れればいいので、画像ファイルなどは FTP とかで別途取り出して対応しましょう。

それかリネームしてエクスポートに成功したあと、 また uploads に戻してもう一度エクスポートやってみてください。 どういうわけかこれでうまくいっちゃったことあります。 お試しを。

問題2: Wordpress 管理画面からだと失敗する

このプラグイン、Wordpress 管理画面から実行できますけど、 ターミナルから php コマンドで実行する方が良いように思います。

$ cd (略)/wp-content/plugins/wordpress-to-hugo-exporter
$ php hugo-export-cli.php ~/tmp/

ってな具合に $ php hugo-export-cli.php PATH とすると PATH のとこに zip が出力されます。 この方がエクスポート失敗してない気がします。 それとファイルの中身も歯抜けが少ないです。

どうも wordpress管理画面から実行すると歯抜けが目立つんですよね。 固定ページが出てこないとか wp-content/uploads/ 以下のファイルが抜けるとか。 そもそも php コマンドでも抜けるんですけどね。

問題3: 歯抜け、出力内容

問題2 でも述べましたが、どうも完全にエクスポートされないことがあります。 そこは wordpress 管理画面からやってみたり、php コマンドでやってみたり、 またサーバーが違ってても結果が異なりました。 実験用途でたまたまテストサーバー2台に本サイトコピーしてあったんですが、 そこで試すとどうも出力結果が異なりました。 主に固定ページの数が違う感じでした。 phpのバージョンのせいかもですね。わからぬです。 時間かけてらんないんで深追いはしません。 出力されるものだけで移行を進めると良さそうです。

あと、そもそも出力されるマークダウンの内容がそのままで使えなかったりします。 Hugo のテーマにもよりますけど結局、手動で直しが必要ですねー。 いちから記事内容をコピーするよりは早いので助かりますかね。

おわりに

やはり、移行作業は大変ですね。 なんとなく流れがわかったところでこのサイトを移行するのはめんどくさくてやめちゃいそう・・・。 本腰あげて移行する日は来るだろうか。

本記事がエクスポートでつまづいた方の参考になれば嬉しいです。 ではでは。

 

Next →