閉じる

技術ブログ

【WP-CLI】テスト環境から本番環境へのドメイン変更方法

2026.03.04
WP

サーバー移行やテスト環境から本番公開する際、データベース内に残っている旧ドメインのURLを一括で変更する必要があります。
WP-CLIの search-replace コマンドを使えば、コマンド一発で安全に置換できます。


1. 基本のドメイン変更コマンド

1-1. まずはWordPressのディレクトリに移動

大前提: WP-CLIのコマンドは、wp-config.php があるディレクトリで実行します。
cd /var/www/html

1-2. dry-run で変更箇所を確認(まずはこれ!)

いきなり置換せず、まず何件ヒットするか確認します。

wp search-replace ‘https://test.example.com’ ‘https://www.example.com’ –dry-run

実行結果の例:

+——————+———————–+————–+——+
| Table | Column | Replacements | Type |
+——————+———————–+————–+——+
| wp_options | option_value | 2 | PHP |
| wp_posts | post_content | 15 | SQL |
| wp_posts | guid | 25 | SQL |
| wp_postmeta | meta_value | 8 | PHP |
+——————+———————–+————–+——+
Success: 50 replacements to be made.
ポイント: --dry-run を付けている間は実際には変更されません
何件変わるかを確認して、問題なければ次のステップへ進みます。

1-3. 本番実行

--dry-run を外して実行すると、実際に置換されます。

wp search-replace ‘https://test.example.com’ ‘https://www.example.com’
Success: Made 50 replacements.

2. なぜ search-replace が必要なのか?

WordPressのデータベースには、いたるところにURLが保存されています。

保存場所 具体例
wp_options サイトURL(siteurl, home)
wp_posts 記事本文中の画像URL、内部リンク
wp_postmeta カスタムフィールドに入れたURL
wp_posts.guid 投稿の固有識別子

これらを手作業で1つずつ変えるのは現実的ではありません
search-replace なら、全テーブルを横断して一括変更してくれます。

補足: WordPressのオプション値やウィジェット設定はPHPのシリアライズ形式で保存されています。
単純なSQLの REPLACE() ではシリアライズが壊れますが、wp search-replaceシリアライズを正しく扱うので安全です。

3. 実践:テスト環境から本番環境への移行手順

テスト環境(test.example.com)で構築したWordPressを、本番(www.example.com)に移行する全手順です。

ステップ1:本番環境にDBをインポート

# テスト環境でDBをエクスポート
wp db export migration_backup.sql

# 本番環境にSQLファイルを転送して、インポート
wp db import migration_backup.sql

ステップ2:ドメインを一括置換

# まずdry-runで確認
wp search-replace ‘https://test.example.com’ ‘https://www.example.com’ –dry-run

# 問題なければ本番実行
wp search-replace ‘https://test.example.com’ ‘https://www.example.com’

ステップ3:キャッシュをクリア

wp cache flush
wp rewrite flush

ステップ4:確認

# サイトURLが正しく変わったか確認
wp option get siteurl
→ https://www.example.com

wp option get home
→ https://www.example.com

完了! これでデータベース内のすべてのURLがテスト環境から本番環境に変更されました。

4. よくあるパターン別コマンド

パターン コマンド
httpからhttpsに変更 wp search-replace 'http://example.com' 'https://example.com'
wwwあり/なし変更 wp search-replace 'https://example.com' 'https://www.example.com'
サブディレクトリ移動 wp search-replace 'https://example.com/wp' 'https://example.com'
ドメイン変更 wp search-replace 'https://old-domain.com' 'https://new-domain.com'

5. 便利なオプション

5-1. 特定のテーブルだけ置換

# wp_postsとwp_postmetaだけ置換
wp search-replace ‘旧URL’ ‘新URL’ wp_posts wp_postmeta

5-2. 大文字小文字を区別しない

wp search-replace ‘旧URL’ ‘新URL’ –regex –regex-flags=i

5-3. マルチサイトで全サブサイトに適用

wp search-replace ‘旧URL’ ‘新URL’ –network

【重要】注意点

1. 必ず事前にDBバックアップを取ること
wp db export backup_before_replace.sql
置換は元に戻せません。バックアップがあれば wp db import で復元できます。
2. dry-runを省略しないこと
--dry-run で想定外のテーブルが引っかかっていないか確認してから実行してください。
3. guidカラムについて
guid カラムは投稿の固有識別子で、WordPress公式は「変更しないことを推奨」しています。
気になる場合は --skip-columns=guid で除外できます。
wp search-replace '旧URL' '新URL' --skip-columns=guid

まとめ

手順 コマンド
WordPressディレクトリに移動 cd /var/www/html
変更箇所を確認(必須) wp search-replace '旧' '新' --dry-run
本番実行 wp search-replace '旧' '新'
キャッシュクリア wp cache flush && wp rewrite flush
結果確認 wp option get siteurl

WP-CLIの search-replace は、PHPシリアライズも正しく処理してくれる点がSQLの直接書き換えより圧倒的に安全です。
サーバー移行やSSL化の際は、ぜひ活用してください。


参考リンク


作成: Seeds Brains(ジェイノーム業務支援AI)