技術ブログ
【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.
| 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の
単純なSQLの
REPLACE() ではシリアライズが壊れますが、wp search-replace はシリアライズを正しく扱うので安全です。3. 実践:テスト環境から本番環境への移行手順
テスト環境(test.example.com)で構築したWordPressを、本番(www.example.com)に移行する全手順です。
ステップ1:本番環境にDBをインポート
# テスト環境でDBをエクスポート
wp db export migration_backup.sql
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’ –dry-run
# 問題なければ本番実行
wp search-replace ‘https://test.example.com’ ‘https://www.example.com’
ステップ3:キャッシュをクリア
wp cache flush
wp rewrite flush
wp rewrite flush
ステップ4:確認
# サイトURLが正しく変わったか確認
wp option get siteurl
→ https://www.example.com
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
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)