メインのブログをはてなブログ (http://atachibana.hatenablog.jp/) から本サイトに移行しました。契約したレンタルサーバーを有効活用したいな、と思っての移行で、はてなブログ自体は気に入っていました。管理画面のセンスの良さや技術力には本当に感心します。
本稿では、はてなブログから WordPress への引越し作業のうち、データの移行について記述します。テーマのカスタマイズについてはこちらの記事を参照してください。
参考: 実録 WordPress Twenty Sixteen のカスタマイズ
大きな流れ
はてなブログは WordPress で構築されていますので通常の WordPress の移行と変わりません。ただエクスポートしたデータには、はてなキーワードへのリンクや、アフィリエイトへのリンクが含まれますので編集したいと思います。手順は以下のとおりです。
- 移行元のはてなブログでテキストファイルにデータをエクスポートする。
- テキストファイル内の「はてなキーワード」「Amazon アフィリエイト」を編集する。
- 移行先の本サイトにテキストファイルを取り込む。
事前の注意点1 – デフォルトのカテゴリー
カテゴリーを設定していない記事が多数ある場合、管理画面の「設定」->「投稿設定」の「投稿用カテゴリーの初期設定」で、デフォルトのカテゴリーを決めておきます。現在の WordPress Version 4.4.1 ではカテゴリーの一括付与は可能ですが、一括変更、一括削除はできないため、誤ると個別処理が必要で、面倒です。
事前の注意点2 – 少しづつ、そして、ゴミ箱は空に
エクスポートしたファイルは3個程度の投稿で何度か試した上で、まとめて実行すると効率的です。なお一度インポートした投稿を、再度インポートすると重複エラーが発生します。前の投稿は削除する必要があります。このときゴミ箱に入れただけでは不十分で、ゴミ箱を空にする必要があります。
はてなブログでのデータのエクスポート
はてなブログからテキストファイルでデータをエクスポートする手順です。
- はてなブログの管理画面の左サイドメニューで「設定」をクリックする。
- 「詳細設定」タブをクリックし、「エクスポート」セクションの「記事のバックアップと製本サービス」をクリックする。
- 「ダウンロードする」をクリックし、ファイル名を付けて保存する。以下では「hatenablog.txt」として保存します。なお文字コードは UTF-8 です。
はてなキーワードの変更
エクスポートしたファイルには大量の「はてなキーワード」へのリンクが含まれます。
1 |
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CB%DC%A4%CE%BB%A8%BB%EF">本の雑誌</a> |
ここから余計なタグを削除し、上の例であれば「本の雑誌」のみにします。後述のスクリプトで対応しますが、エディタの正規表現による置換でも可能です。
1 2 |
置換前: <a class="keyword" href="[^"]+">(.*?)<\/a> 置換後: \1 |
サクラエディタであれば以下のように設定し「すべて置換」をクリックします。
Amazon アフィリエイトの変更
はてなブログで一番感動したのはアフィリエイト挿入の簡易性。書評の書影も兼ねていたため多用していました。素晴らしいことに同様のプラグインが公開されています。
Amazon JS
これを使用すると本文中に記述したショートコード
1 |
[amazonjs asin="4860113527" locale="JP" title="本の雑誌390号"] |
で以下のように表示されます。
エクスポートしたファイルを見ると Amazon アフィリエイト部分は次のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<div class="freezed"> <div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4860113527/usafurunowebs-22/"><img class="hatena-asin-detail-image" title="本の雑誌390号" src="http://ecx.images-amazon.com/images/I/51-2AC9xfQL._SL160_.jpg" alt="本の雑誌390号" /></a> <div class="hatena-asin-detail-info"> <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4860113527/usafurunowebs-22/">本の雑誌390号</a></p> <ul> <li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%CB%DC%A4%CE%BB%A8%BB%EF">本の雑誌</a>編集部</li> <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%CB%DC%A4%CE%BB%A8%BB%EF%BC%D2">本の雑誌社</a></li> <li><span class="hatena-asin-detail-label">発売日:</span> 2015/11/11</li> <li><span class="hatena-asin-detail-label">メディア:</span> 単行本(ソフトカバー)</li> <li><a href="http://d.hatena.ne.jp/asin/4860113527/usafurunowebs-22" target="_blank">この商品を含むブログ (3件) を見る</a></li> </ul> </div> <div class="hatena-asin-detail-foot"> </div> </div> </div> |
ここから先のショートコードに一括変換すれば目的を達成できますが、残念ながらサクラエディタや秀丸の正規表現では改行を含むパターンマッチをサポートしていません。仕方がないのでスクリプトで処理します。お遊びで生まれて初めて Ruby を使ってみました。
1 2 3 4 5 6 7 8 9 10 11 |
input_file = 'hatenablog.txt' output_file = 'converted.txt' lines=File.read(input_file, encoding: 'utf-8') lines.gsub!(/<a class="keyword" href="[^"]+">(.*?)<\/a>/, '\1') # 注意: ショートコードが動作するため、2番目のパラメータの先頭の「[」が大文字です。小文字にして使用してください。 lines.gsub!(/<div class="freezed">.*?ASIN\/(\d*)\/.*?title=(.*?) src=.*?<div class="hatena-asin-detail-foot"> <\/div>\n<\/div>\n<\/div>/m, '[amazonjs asin="\1" locale="JP" tmpl="Small" title=\2]') File.write(output_file, lines) |
5行目が Amazon アフィリエイトを Amazon JS のショートコードに変換するコード。4行目は先ほどの、はてなキーワードを変換するコードです。
これを convert.rb 等の名前で保存し、はてなブログからエクスポートしたファイルに対して実行します。
(追記) インポート後、手動で修正したもの
あとでサイトを見ていて気づき、ちまちま修正していったものです。「http://」「hatena」あたりで検索し、数が多い場合は事前に対策を施した方がよいでしょう。
- 投稿間のリンク
- 古いサイトへのリンク
- 古い名義のままのコメント欄
データのインポート
変換したテキストファイル、ここでは converted.txt を取り込みます。
- 移行先の WordPress 管理画面の「ツール」->「インポート」をクリックする。
- 「Movable Type と TypePad」をクリックする。
- 「Movable Type・TypePad インポートツール」画面が表示されるので、「今すぐインストール」をクリックする。
- 「プラグインを有効化してインポートツールを実行」をクリックする。
- 「参照」をクリックし、データを含むテキストファイルを指定する。
- 取り込むアカウントを指定して「実行」をクリックする。
「はてなブログから WordPress への移行 – はてなキーワードと Amazon アフィリエイト対応」への1件のフィードバック