WordPressを運用しているドメインを変更する際に必要になる、データベースのドメイン置換の方法をご紹介します。
【注意】
※データベースを書き換えるツールのため、使用は自己責任で行って下さい。
※使用後はサーバーから必ず削除して下さい。
WordPressは何で出来ているか
そもそもWordPressは何から出来ているか?を把握する必要があります。
大きくわけて二つあり、PHPで出来たコアファイルやテーマ・画像などの「実ファイル」。そして様々なデータを記録している「データベース(SQLファイル)」の二つ。
「実ファイル」はサーバー上の移動でもかまいませんが、問題になってくるのは「データベース(SQLファイル)」の方。こちらには、運用していたドメイン情報やパスの情報が記載されています
ということは、別のドメインになるとデータベースにあるドメイン名と食い違うのでサイトが機能しなくなります。
シリアライズの問題
じゃあ「データベース(SQLファイル)」を、エディタの一括置換で書き換えればいいかとなりそうですが、そう単純ではありません。
データベース内ではシリアライズがされています。
例えば example.com というドメインで運用していたとすると以下のように記録されています。
s:19:"https://example.com";
URLの文字数19字が s:19 (型:値(バイト数))という形で保存されています。
この状態でドメイン名を変更すると、文字数とドメインの整合性がとれなくなるので不具合が起こってしまいます。
ドメイン名の置換とともにシリアライズされた数値を変更することができるのが、今回ご紹介する「Search Replace DB」というツールです。WordPress公式でも推奨されています。
Moving WordPress | WordPress.prg
https://wordpress.org/support/article/moving-wordpress/
1.Use the Velvet Blues Update URLs or Better Search Replace plugins if you can access your Dashboard.
https://wordpress.org/support/article/moving-wordpress/ (該当部分の引用)
2.Use WP-CLI’s search-replace if your hosting provider (or you) have installed WP-CLI.
3.Use the Search and Replace for WordPress Databases Script to safely change all instances on your old domain or path to your new one. (** only use this option if you are comfortable with database administration ** )
1.ダッシュボードにアクセスできる場合は、Velvet Blues UpdateURLsまたはBetterSearchReplaceプラグインを使用してください。
2.ホスティングプロバイダー(またはユーザー)がWP-CLIをインストールしている場合は、WP-CLIの検索置換を使用します。
3.WordPressデータベースの検索と置換スクリプトを使用して、古いドメインのすべてのインスタンスまたは新しいドメインへのパスを安全に変更します。(このオプションは、データベース管理に慣れている場合にのみ使用してください)
今回はこの3つ目の方法となります。
Search Replace DB のダウンロード
まず、以下のサイトよりツールをDLして下さい。
各項目を埋めて送信するとメールでDLリンクが届きます。
※入力フォームの寄付の欄では ¥0 も選択可能です。
公式サイト(英語)
Database Search and Replace Script in PHP
届いたメールには以下のように書かれています。
今回は最新の ver4.1.3 を使用するので here をクリック。
Download Search Replace DB v 4.1.3 here. If you have compatibility problems or are running on an older server for whatever reason, then please use v 3.1.0 but remember it’s much more dangerous on a production server as it auto-loads database connection details from WordPress or Drupal.
Search Replace DB の使用方法
ダウンロードしたフォルダをサーバーにアップロードします。
アップロードする場所はWordPressをインストールしたディレクトリ(「wp-config.php」と同じ階層)です。
そして、https://新しいドメイン名/Search-Replace-DB-master/ にアクセスします。
※http ではなく https でアクセスして下さい。httpの場合は警告文が表示されます。
アクセスすると以下のような入力画面になります。
※ver3の時は、データベース情報が自動的に取得されていましたが、ver4 では手動でデータベース情報を入力する必要があります。
① 置換するURLを入力します。例えば、https://example.com → https://example-new.com ならば 左側に //example.com 右側に //example-new.com です。サブディレクトリを含む場合は//example.com/sub → //example-new.com/sub となります。
※最後のスラッシュ / は入れません(悪い例://example.com/ ・良い例://example.com )。
※ // を含めない場合、メールアドレスもヒットしてしまう可能性があるため //example-new.com としています。
② データベースの情報を入力します(置換先の wp-config.php 内の記述を参考にして下さい)。
[ Test Connection ]ボタンを押し、「Success. You are connected.」と表示されればデータベースに接続成功です。
database name | データベース名 |
username | データベースのユーザ名 |
pass | データベースのパスワード |
host | データベースのホスト名(自動で補完されない場合はwp-config.phpを参照) |
port | ポート番号(自動で補完されます*) |
※port – サーバーのデータベースがMaria DB5の場合「3306」Maria DB10は「3307」。
③ テーブルを指定して文字列の置き換えを行いたい場合は「select tables」をクリック後、テーブルを選択します。(通常は all tables のままでOK)
④ 「Do a safe test run」で試し走り、実行するとどれだけ変更されるのか確認できます。
⑤「Search and Replace」を選択すると置換が実行されます。
⑥ 作業が完了したら [ delete me ] をクリックして、Search Replace DBを削除します。
※必ず行って下さい!
【参考】
WordPress Search Replace DB の使い方
https://www.webdesignleaves.com/pr/wp/wp_search_replace_db.html
Search Replace DB でWordPressのURLの変更手順
https://prospect.co.jp/blog/546/
一番わかりやすい記事でした。
ありがとう
ぺろ様
嬉しいお言葉ありがとうございます!
励みになります!