WordPressの記事を表計算ソフトで一括編集する方法

忍者ブログからWordPressへの移行で一番の難関が、全記事について、元のURLに紐づいた新規のスラッグを割り当てることだった。
私は忍者ブログのURLを「/Entry/数字/」という形式で運用していたので、数字が記事のIDになっている。WordPressへの移行ではこの「数字」は保存しておきたかった。
そのためには、この数字をWordPressのスラッグとして活用することが必要だ。
スラッグを自動設定できればいいが、忍者ブログからエクスポートするデータにはこの数字の情報が含まれていない。
MovableType形式にはbasenameというフィールドがあり、これでURLを構成することができるが、残念ながら忍者ブログのエクスポートデータにはbasenameは含められていなかった。これは忍者ブログ同士のインポート・エクスポートでも同じで、記事別URLはエクスポートしてインポートすると消えてしまうのだそうだ。

MovableType形式のデータは1行1フィールド、記事間の区切りを区切り記号という形式で、後からbasenameフィールドを追加するにはPythonなどでスクリプトを書く必要がある。
今回は、別の方法としてデータをまずCSV形式(1行1記事)に変換し、表計算ソフトでスラッグの列を一括で書き換えることにした。

また、記事URLの修正も含め、WordPressへの移行に伴ってコンテンツの書き換えが必要になる。これはテキストエディタで行った。

具体的な手順は以下のような感じになる。

まず、忍者ブログからエクスポートされたデータをWordPress標準の「Movable Type と TypePadインポータ」(メニューのツール→インポート)でインポートする。
次に、インポートしたばかりの全記事を、WP All Exportプラグイン(要インストール)でCSV形式でエクスポートする。
そして、このデータをエディタや表計算ソフトで編集する。
具体的には
・他の記事へのリンクのURL
・記事の画像のURL
の書き換えが必須で、この他に、
・古い記事中のhttpリンクのhttpsへの書き換え
(YouTubeやAmazonアソシエイトなど)
も行った。

私の場合はスラッグを表計算ソフトのフィル機能で生成し、さらに記事や画像のURLをテキストエディタで全置換。また、「http://youtube・・・」は「https://youtube・・・」に、AmazonアフィリエイトのURLも「http://」で始まるものは「https://」に置換した。

また、忍者ブログで作成したサムネイル画像のURLも書き換えた。
忍者ブログ時代、大きなサイズの画像は、自動生成されたサムネイルからのリンクにしていた。サムネイルのURLは自動生成で「/Img/番号/」となっている。しかし、サムネイルはWordPressにはインポートしていないので、元画像のURLに全て差し替えた。これはPerlスクリプトで正規表現の置換を使った。
スクリプトは以下の通り。
やっていることは、<a href=”URL1″><img src=”URL2″></a>のURL2をURL1に差し替えることだ。

#!/usr/bin/perl
while(<>) {
  s/(<a [^>]*href=\"\")(https:\/\/blog\.ipodlab\.net\/wp-content\/uploads\/[^\"]*)(\"\"[^>]*>)(<img [^>]*src=\"\")([^\"]+)(\"\"[^>]*>)/$1$2$3$4$2$6/g;
  print;
}

次に、編集したデータを、WP All Importプラグイン(要インストール)でインポートする。

インポートするデータを新規の記事として扱うか、既存記事のアップデートするか、選択できる。ここでは「既存のアイテム」を選択。

続いて、CSVファイルから読み込んだデータを確認する。問題なければ次へ。

そして、読み込んだデータから記事を構成する方法を指定する。画面の右側がCSVのデータで、左側がCSVデータから生成する記事の入れ物。右側のデータを左側の入れ物にマップして、記事データを作る。

具体的には、例えば右側の「title」の部分を、左側の記事のタイトル部分にドラッグ&ドロップする。これで、CSVデータのtitleに指定された文字列が、記事のタイトル文字列として利用される。
記事本文は、contentのデータを使うのでcontentを記事本文にドラッグ&ドロップする。それ以外の属性も、書き換えたい場合は同様にドロップ&ドロップする。
日付は、デフォルトで現在の日付になっているので、CSVデータの日付を使いたい場合は忘れずに設定が必要だ。
プリビューボタンを押すとプレビューを見ることができる。記事の選択は、右上のボックスの中に記事番号を入れてから左右ボタンを押せば切り替えられる。

最後にインポートの段階だが、ここが一番重要で、「idが一致する記事」の「書き換えたいデータだけを選択して更新」する。
ここで、前のステップでドラッグ&ドロップしていない項目を更新すると空白になってしまうので注意。
まず、「あなたのファイルのレコードは、あなたのサイトの投稿sと一致します…」というところで「投稿ID」を選択する。
すると、投稿IDの下に入力ボックスが出てくるので、そこへ右側のCSVデータから「id」をドラッグ&ドロップする。
すると、以下のようになる。

次に、書き換えたいデータを選択する。
初期状態は以下のようになっているが、「新しく存在するレコードから・・・」「Skip投稿if their data …」のチェックは外す。
そして、「更新するデータを選択します」を選択する。

すると、以下のように更新するフィールドを選択する画面が出るので、書き換えたい項目だけを選択してあとはチェックを外す。

これで、あとはインポートを実行して成功を祈るのみ。

WP All ExportとWP All Importのコンビは本当に強力だ。無料版でも十分使い物になる。(日本語の翻訳はかなり変だけど)
まだいろいろ修正が必要なリンクが残っている(楽天blog時代の古い画像URLなど)ので、今後もお世話になりそうだ。

コメント

タイトルとURLをコピーしました