はじめに
- YUZURIHAの松村です。
- WordPressサイトのドメインを変更する場合など、WordPressのDB上の文字列の一括置換が必要となるケースがあります。
- その際にハマったポイントと対応した方法について、ご紹介します。
WordPressのDBを手動で一括置換する
- 最初は、以下の手順で手動による一括置換を行おうとしました。
- DBのデータをダンプする
- ダンプファイルをテキストエディタで開いて一括置換する
- DBにリストアする
手動での一括置換で起こった問題
- WordPressのDBでは、シリアライズ化されたデータを保持しています。
- 特に多言語対応のPolylangプラグインを使っていると、
wp_optionsテーブルなどに大量のシリアライズ化されたデータが生成されます。
- 特に多言語対応のPolylangプラグインを使っていると、
- シリアライズ化されたデータは、以下のような文字数+文字列という形式になっている場合があります。
s:15:\"https://yzrh.jp\"; - そのため手動で一括置換すると、文字列部分のみが置換されて文字数は更新されないという問題が発生しました。
s:15:\"https://yzrh.co.jp\";
Better Search Replace プラグインを使う
- そこで、Better Search Replaceというプラグインを使って一括置換します。
- まず
Better Search Replaceプラグインをインストールして有効化したら、ツールからBetter Search Replaceを選択します。 - 検索対象文字列・置換文字列を入力して、テーブルを選択します。
-
Better Search Replaceプラグインを使って置換すると、文字数部分もしっかり更新されていることが確認できました。s:18:\"https://yzrh.co.jp\";
最後に
- 「DBのデータをダンプしてテキストエディタで開いて一括置換する」というのはとてもシンプルで、一見確実な方法に思えます。
- しかし今回のようなケースがあるので、「置換しようとしてるデータは何なのか」「それに付随するデータは何を保持しているのか」としっかり考えることが大事ですね。

