WordPress サイトのドメイン変更時に使う SQL 文

September 11, 2013

ずっと更新もメンテもしていなかったら、ドメインの更新( johnykei.com )も忘れてしまい見れない状態となってしまいました。

ドメインを再取得しようかと思ったけど、サポートに問い合わせたら結構なお金もかかるとのことだったので、違うドメイン取得した方が早そうねってことで新ドメイン( johnykei.net )で再スタートしたいと思います。

WordPress サイトの場合、ドメインを変更しただけだとまだ見れないなので、DB の URL の更新が必要。
この時に、この SQL 文が便利なのでメモ。
仕事でもステージング環境と本番環境を切り替える時に使っています。(自分がやっているわけではないけど)

<pre class="lang:mysql decode:true ">UPDATE wp_options SET option_value = replace(option_value, 'http://old-example.com', 'http://new-example.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://old-example.com', 'http://new-example.com');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://old-example.com', 'http://new-example.com');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://old-example.com', 'src="http://new-example.com');
UPDATE wp_posts SET guid = REPLACE (guid, 'http://old-example.com', 'http://new-example.com') WHERE post_type = 'attachment';
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://old-example.com','http://new-example.com');

※ DB の取り扱う際には、必ずバックアップを取って行いましょう。

今回の場合、 old-example.com が johnykei.com、new-example.com が johnykei.net でした。

ちなみに、マルチサイトを使っている場合にはそれぞれのサイトのテーブル(wp2options など)も対象にしないといけないので注意。

あと、wpblogs と wpsite テーブルの「domain」も変更が必要です。

<pre class="lang:mysql decode:true  ">UPDATE wp_blogs SET domain = 'new-example.com';
UPDATE wp_site SET domain = 'new-example.com';

ちょっと前の記事ですが、こちらにもっと詳しく書かれています。

※ 2015/3/5 追記

僕はこの SQL 文を元に本番データをローカルに持ってきたりすることがあるのですが、WP-CLI を入れてる場合はこれでいけそう。今度試してみる。WP-CLI 素敵。

<pre class="lang:default decode:true ">wp search-replace 'http://example.com' 'http://example.local'

Profile picture

Johnny Okafuji
フロントエンドエンジニア / ビートルズバンド Crescendo Four のジョン・レノン担当。/ Love Darts🎯 / アナザーヒストリーエッセンシャルクラス修了&引き続きコーチング勉強中 / コーチング関係の記事は note に書いてます。
Twitter: @johnykei
note: https://note.com/johnykei

© 2023 All rights reserved.