2026年10月17日
2026年10月17日
Search Regexの使い方|WordPressのデータベースを一括検索・置換する方法
結論:Search Regexとは、実行前の確認が最優先
Search Regexは、WordPressのデータベースの中身を、検索して置換するプラグインです(作者はJohn Godley)。投稿や固定ページだけでなく、コメント、ユーザー、メタデータ、WordPressのオプションまで、広い範囲を一括で変更できます。
強力な分、間違えると広い範囲に影響します。 実行する前に、バックアップを取り、検索結果の件数と対象を確認することを、この記事の前提にしてください。なお、wordpress.orgのページには、バックアップを取るようにという公式の記載はありません。この記事で勧めるバックアップは、当サイトの推奨です。
この記事は、2026年10月16日時点の公式情報にもとづいています。画面の項目名はバージョンで変わるため、画面の操作手順は載せていません。
基本情報
| 項目 | 内容 |
|---|---|
| 作者 | John Godley |
| 有効インストール数 | 10万以上 |
| 対応するWordPress | 7.1.3まで動作確認が記載されています |
できること
wordpress.orgのページでは、次のことができると説明されています。
| 分類 | 内容 |
|---|---|
| 検索の対象 | 投稿、固定ページ、カスタム投稿タイプ、コメント(スパムを含む)、ユーザー、メタデータ、WordPressのオプション |
| 結果に対する操作 | 修正と置換、削除、CSVおよびSQLへのエクスポート、任意のPHPアクションの実行 |
| 一括変更 | 数値の加減算、日付への時間・日・週・月の加算、タグやカテゴリの追加・削除・置換 |
| ショートコード | 現在の日時の挿入、他の列のデータの挿入、文字の変換 |
| 正規表現 | PHPの正規表現を全面的にサポート。キャプチャしたデータを、置換側で使えます |
正規表現の具体的な書き方の例は、wordpress.orgのページには書かれていません。
実行前に確認すること
1. バックアップを取る
置換や削除は、結果を見て問題があっても、元に戻せない場合があります。実行前に、ファイルとデータベースの両方のバックアップを取ってください。バックアップの方法は、WordPressバックアッププラグイン比較【2026年版】を参照してください。戻す手順は、WordPressをバックアップから復元する方法にあります。
2. 対象と件数を確認してから実行する
検索で、何件・どの項目が一致するかを、先に確認します。意図しない項目が含まれていないかを見てから、置換や削除を実行してください。
3. 「削除」の操作に注意する
wordpress.orgの変更履歴には、バージョン3.3.0で「削除の確認ダイアログを追加」とあります。また、レビュー(2025年7月21日付)には、「Delete Matches」が、一致したテキストだけでなく、レコード全体(投稿や添付ファイルを含む)を削除するという指摘があります。これは利用者の意見で、作者による説明ではありません。ただし、削除の操作は影響が大きいため、テスト用のサイトで、動作を確認してから使ってください。
WP-CLIの wp search-replace との使い分け
コマンドラインが使える環境では、WP-CLIに標準の wp search-replace でも、データベースの置換ができます。WP-CLIの公式ドキュメントでは、次のように説明されています。
| 項目 | 内容 |
|---|---|
| 動作 | データベース内の文字列を検索して、別の文字列に置換します。既定では $wpdb に登録されたテーブルが対象です |
| シリアライズされたデータ | PHPのシリアライズデータを「賢く扱う」と記載されています。シリアライズデータを含む列では、自動でPHPによる処理に切り替わります |
**--dry-run** |
置換を実行してレポートを表示しますが、データベースには保存しません |
**--export[=<file>]** |
データベースを変更せず、変換結果をSQLファイルとして書き出します |
--regex |
正規表現で検索します。通常より約15〜20倍遅くなるとされています |
--precise |
すべての列をPHPで処理します。低速ですが、複雑なシリアライズデータ向けです |
--skip-columns、--skip-tables |
列やテーブルを除外します |
公式ドキュメントの例です。
# データベースを変更せず、結果だけ確認する(まずこれで確認)
wp search-replace 'foo' 'bar' wp_posts wp_postmeta wp_terms --dry-run
# guid列を除いて置換する
wp search-replace 'http://example.test' 'http://example.com' --skip-columns=guid
# 結果をSQLファイルに書き出す(データベースは変更しない)
wp search-replace foo bar --export=database.sql
**まず --dry-run で確認してから、実行する流れを、おすすめします。公式ドキュメントにも、バックアップに関する記載はありません**。実行前のバックアップは、こちらでも必要です。
Search Regexは、プラグイン上でSQLやCSVへのエクスポートもできます。WP-CLIは、--dry-run で保存せずに確認できる点が特徴です。
Search Regexのバージョン3.2で「WP CLI functions」が追加されたと変更履歴にありますが、使い方はwordpress.orgのページには書かれていません。
よくある質問
実行する前に、何をすればよいですか。
バックアップを取ります。そのうえで、検索だけを行い、一致する件数と対象を確認してください。公式のページには、バックアップの案内はありません。
正規表現は使えますか。
使えます。PHPの正規表現を全面的にサポートしていて、キャプチャしたデータを置換側で使えると記載されています。
シリアライズされたデータも置換できますか。
wordpress.orgのSearch Regexのページには、シリアライズデータの扱いについての記載はありません。WP-CLIの wp search-replace は、シリアライズデータを扱えると公式ドキュメントに書かれています。
変更を試すだけで、保存したくない。
WP-CLIの wp search-replace は、--dry-run で保存せずに確認できます。Search Regexで同じことができるかは、wordpress.orgのページには書かれていません。