9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Better Search Replaceを使ったWordPressのDB置換

9
Posted at

はじめに

  • YUZURIHAの松村です。
  • WordPressサイトのドメインを変更する場合など、WordPressのDB上の文字列の一括置換が必要となるケースがあります。
  • その際にハマったポイントと対応した方法について、ご紹介します。

WordPressのDBを手動で一括置換する

  • 最初は、以下の手順で手動による一括置換を行おうとしました。
  1. DBのデータをダンプする
  2. ダンプファイルをテキストエディタで開いて一括置換する
  3. DBにリストアする

手動での一括置換で起こった問題

  • WordPressのDBでは、シリアライズ化されたデータを保持しています。
    • 特に多言語対応のPolylangプラグインを使っていると、wp_optionsテーブルなどに大量のシリアライズ化されたデータが生成されます。
  • シリアライズ化されたデータは、以下のような文字数+文字列という形式になっている場合があります。
    s:15:\"https://yzrh.jp\";
    
  • そのため手動で一括置換すると、文字列部分のみが置換されて文字数は更新されないという問題が発生しました。
    s:15:\"https://yzrh.co.jp\";
    

Better Search Replace プラグインを使う

  • そこで、Better Search Replaceというプラグインを使って一括置換します。
  • まずBetter Search Replaceプラグインをインストールして有効化したら、ツールからBetter Search Replaceを選択します。
    • スクリーンショット 2026-05-14 10.28.57.png
  • 検索対象文字列・置換文字列を入力して、テーブルを選択します。
    • ドライランがあるので、置換件数が何件になるのか予めわかるのがありがたいですね。
    • スクリーンショット 2026-05-14 10.31.55.png
  • Better Search Replaceプラグインを使って置換すると、文字数部分もしっかり更新されていることが確認できました。
    s:18:\"https://yzrh.co.jp\";
    

最後に

  • 「DBのデータをダンプしてテキストエディタで開いて一括置換する」というのはとてもシンプルで、一見確実な方法に思えます。
  • しかし今回のようなケースがあるので、「置換しようとしてるデータは何なのか」「それに付随するデータは何を保持しているのか」としっかり考えることが大事ですね。
9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?