MySQLで作成したデータベースの中身を一括置換する際に役立つ方法を紹介します。サイトのパス変更やドメイン変更など、WordPressを運用していると大量のデータをまとめて書き換えるケースがよくあります。
作業前には必ずバックアップ(エクスポート)を取りましょう!
基本構文:文字列置換関数
MySQL には REPLACE()
関数が用意されており、指定した文字列を別の文字列に置き換えることができます。phpMyAdminの「SQL」タブに以下のようなクエリを入力することで、簡単に実行できます。
UPDATE テーブル名
SET カラム名 = REPLACE(カラム名, "置換対象の文字列", "置換文字列");
- テーブル名:例)
wp_posts
- カラム名:例)
post_content
- “置換対象の文字列”:変更前のURLや文字列
- “置換文字列”:変更後のURLや文字列
この一文を実行するだけで、該当テーブルの指定したカラム内の文字列を一括で書き換えることができます。
WordPressの投稿内容を編集する場合
WordPressでは、投稿データが wp_posts
テーブルに保存されています。
wp_posts
:投稿のメインテーブルpost_content
:投稿内容を保持しているカラム
「guid」なども書き換えることができますが、guid
はWordPressが内部的に使用する固有IDとしての意味合いが強いため、むやみに変更しないほうが望ましい場合があります。必要性をよく検討してから実行してください。
UPDATE wp_posts
SET guid = REPLACE(guid, "置換対象の文字列", "置換文字列");
同様に、post_content
や post_title
、post_excerpt
など必要なカラムを指定して書き換えることが可能です。
置換時の注意点
バックアップの取得
万が一のため、作業前に必ずエクスポートなどでデータベースのバックアップをとりましょう。
作業後にトラブルが発生しても、バックアップがあれば復元が可能です。
シリアライズデータの破損に注意
WordPressではウィジェットやテーマ設定など、一部のデータがシリアライズ形式(PHPの配列を文字列化したもの)で保存されていることがあります。
単純な文字列置換でデータ長が変わるとシリアライズ形式が壊れてしまい、設定が読み込めなくなる可能性があります。
もしシリアライズデータを扱う場合は、WP-CLIの search-replace コマンドやプラグイン(例:Better Search Replace)など、シリアライズ対応の手段を使うことを検討してください。
作業後の確認
置換後は、該当ページの表示や管理画面から問題なく編集できるかを確認しましょう。
特にURL変更などはリンク切れや画像のパス不備が起こりやすいため、十分にテストする必要があります。
まとめ
REPLACE()
関数を使うことで、MySQLデータベース内の文字列を簡単に一括置換できます。- WordPressの投稿データ(
wp_posts
テーブル)なども同様の方法で編集が可能です。 - 作業前にバックアップを取り、シリアライズデータの扱いに注意しましょう。
- 単純な置換だけではなく、WP-CLIなどのWordPress向けツールを活用することで、トラブルを回避しつつ大規模な文字列置換を行えます。
大阪のホームページ制作会社TREVOでは、ホームページ制作に関する情報を掲載しています。最短2日で仮サイトを公開するサービスやSEO対策に特化したホームページ制作、オリジナルホームページデザイン、ライティング、リスティング広告、WEBマーケティングなどのサービスをご紹介しています。