昨日から今日にかけて、このブログをSeesaa blogから新規に作成したWordPressサーバへ移行しましたので、引っかかった点などをメモしておきます。
なお、このサイトは独自ドメインで運用しており、移転にあたって各記事のURLは変更しないことが前提です。
Seesaa、WordPress共にデータのインポート/エクスポートは配慮されており、
- Seesaa blogはMovableType形式でデータをエクスポートできる
- WordPressはMovableType形式のデータをインポートできる
ので、移行は一見簡単そうです。
ところが、実際には以下のような問題がありました。
- 記事のURLが変更されないよう、WordPress側であらかじめ設定が必要
- 記事のURLが変更されないよう、エクスポートしたデータのBASENAMEの修正が必要
- 画像はエクスポートされず、URLも書き換える必要がある
- Seesaaで自動生成されていたサムネイル画像はWordPressでは生成されない
- WordPress標準のImporterではSeesaa blogのタグがインポートされない
- 改行2回で作っていた「空行」がインポートすると削除される
- YouTube、MPEG4、MP3などのページ埋め込み方法が異なる
とはいえ、今までに多くの方が同じことを行われていますので、ネット上を探せば大体情報は見つかります。
空行の削除だけは少々手こずりましたが・・・。
この記事では、WordPressのインストールや独自ドメインの利用方法などの話は省略します。
未経験者でもlolipopのサーバにインストールして動かすのは問題なくできると思いますし、私自身はWordPressを数年前まで独自サイト(もう閉じてしまいましたが)のCMSとして使っていました。
記事のURLを保つ
さて、WordPressが使えるようになり、手元にSeesaa blogからエクスポートしたデータ(以下、ログデータ)があるとします。
Seesaa blogの記事URLを引き継ぐためには、まずWordPressの「設定」→「パーマリンク設定」で記事に与えるURLを
「/article/%postname%.html」に指定します。
次に、ログデータの各記事にある「BASENAME: 数字.html」の末尾の「.html」を全て取り除きます。
私はOEditというテキストエディタを使って、以下のように正規表現で一括置換しました。
検索:
BASENAME: ([0-9]+)\.html
置換:
BASENAME: \1
画像のURLを修正する
次に画像のURLですが、Seesaa blogでは画像は「http://xxxxxx.up.seesaa.net/image/画像ファイル名」(xxxxxxのところはアカウントごとに異なります)というURLになっています。
WordPress側では、同じ画像をファイル名変更なしで「/wp-content/uploads/画像ファイル名」でアップロードしたとすると、画像のURLも一括置換が必要です。
私の場合は、以下のように置換しました。(こちらは正規表現ではありません)
検索:
http://xxxxxx.up.seesaa.net/image
(xxxxxxのところはアカウントごとに異なります)
置換:
/wp-content/uploads
さらに、サムネイルについては、ファイル名に「-thumnail」が付与されていたので、これを一括削除して、オリジナルの画像を指すように変換しました。
thumbnailの後ろに数字がつくことがあったので、これも以下のように正規表現で置換しました。
検索:
src="(.+)\-thumbnail[^\.]*(\.[^"]+)"
置換:
src="\1\2"
インポートするデータのお化粧としてはこんなところです。
なお、YouTube動画などは、私はあまりリンクしていなかったので、インポート後に個別に修正しましたが、動画・音声等をたくさん埋め込んでいる場合は、この段階で一括して置換するほうが良いと思います。
How to Embed a Video in WordPress – WordPress HowTo
タグと空行をインポートさせる
次に、「タグ」と「改行2回で空行」ですが、これらはWordPressのインポートスクリプト「movabletype-importer.php」の修正が必要です。
タグについては、以下の記事にスクリプトの修正方法が紹介されています。
WordPress 3.0にMovable Typeのタグをインポートする: 小粋空間
WordPressに MovableTypeのタグを含めてインポート
このとおりにスクリプトを修正すれば、Seesaa blogのタグをそのまま引き継ぐことができます。
さらに、この同じスクリプトを修正すると、「改行2回で作った空行」を変換せずにインポートすることもできます。
元のスクリプトは、ログを読み込むときに
- ログのテキストを1行読む(行末の改行は読まない)
- 行が空でなければ、改行を行末に追加
という処理をしています。そのため、空行は無視されていました。
そこで、このあとに「行がコンテンツの行で、かつ行が空だった場合には改行を追加」という処理を加えます。
さらにWordPress組み込みの関数wpautop( $foo, $br );を使って、段落を<p></p>で囲います。
この変更を加えたプラグインのファイルを、以下のリポジトリに置いておきます。
これを使ってインポートすれば、Seesaaでの改行と大体同じ(完全に同じにはなりません)結果が得られます。
コメントを書けるようにする
インポートの時点での設定が悪かったのか、インポートした記事は新規にコメントができない状態になっていました。
これはWordPressの設定画面では一括変更できず、記事ごとの変更しかできないようです。
データベースをSQLで直接操作すれば一括変更可能ということで、以下の記事を参考にして一括変更しました。
コメント