前回に引き続き、WordPressの環境の移行についてです。前回の最後で触れましたが、プラグインなどがDB上にURLを保存することが有ります。「テキストをそのままではなくプログラムで利用しやすい形に加工(シリアライズ)して保持していることがある」と記載しましたがシリアライズとはどういった内容かを先ず記載します。

WordPressで利用しているプログラムでは、1つのフィールドの中に、複数の値を保存することができる配列というものがあります。例えば「http://test.eyeta.jp」というデータと「テスト文章」という2つのデータを保存配列があったとします。これはDBへシリアライズして保存される時は次のような文字列になっています。

中の細かなことを覚える必要はないのですがここで重要なのは、「s:」の後ろにある数字です。

この数字は後ろの文字列の文字の長さ(半角の場合は文字数、全角の場合は特殊な計算をする)を表しています。このため、単純に「test.eyeta.jp」を「www.eyeta.jp」へ書き換えるだけだと、文字数が変わったことが記録されません。

青字の箇所だけではなく赤字の箇所も変更して上げる必要があります。しかも、このデータの持ち方をしている箇所がどこにあるかは、プラグインや投稿の件数などによって変わってしまいます。これを手で修正していく作業はあまりにも大変です。

また、この作業は、文字数を書き換えなくても、サイトが表示されなくなったりすことが少なく、見落とされてしまいがちです。「公開したのだが、問い合わせフォームが動いていなかった」といったことが公開してしばらくしてから発見されたりします。

これを修正する方法は大きく2つ有ります。

  1. ひとつは、利用しているプラグインのデータの持ち方を調べておいて、シリアライズしたデータを保持するプラグインがある場合、その対象箇所を書き換える方法です。(例:contact form 7などはこの持ち方をする有名なプラグインの一つです)
  2. もう一つは、シリアライズされたデータを書き換えてくれるツールを利用する方法です。

前者は、上で書いたように一つ一つ修正していく作業で、後者で利用できる有名なツールはではwordmoveWORDPRESS SEARCH AND REPLACE TOOLなどがあります。(他にもあるかもしれません)
使い方をと思ったのですが、以下に使い方を詳しく書いてくださっている方がいらっしゃるので、参考にしてみてください。

WORDPERSS SEARCH AND REPLACE TOOL
http://inspire-tech.jp/2013/10/wordpress-search-replace-db/

wordmove
http://lab.unicast.ne.jp/2013/05/09/deploying-wordpress-with-wordmove/
http://qiita.com/akiko-pusu/items/43d87896a518233d9503

毎度宣伝になってしまいますが、弊社サービスでは上記に関する対応もボタンひとつで自動で行われるようになっています。
ご興味のある方は無料お試しをどうぞ。