WordPress のサブディレクトリ形式のマルチサイトで WP-CLI を使ってドメイン置換

すべての操作を WP-CLI だけでできるので便利!

1.旧ドメインのサイトからエクスポートしたデータベースの .sql ファイルをインポートする

wp db import export_old_domain_site.sql

2.ドメインの置換をする(その前にテストする)

wp search-replace --network 'https://old.example.com' 'https://new.example.com' --url=old.example.com --recurse-objects --skip-columns=guid --skip-tables=wp_users --all-tables --dry-run

オプションの解説

  • --network :マルチサイトの指定
  • --url=old.example.com :旧マルチサイトのトップドメイン
  • --recurse-objects :再帰的な処理を有効に(デフォルトで true だから不要なのかも?)
  • --skip-columns=guid :カラム guid は置換しない
  • --skip-tables=wp_users :テーブル wp_users は置換しない
  • --all-tables :プラグインなどが追加した独自テーブルもすべて含める
  • --dry-run :実際に置換せずにテストでの動作確認

3.ドメインの置換をする

wp search-replace --network 'https://old.example.com' 'https://new.example.com' --url=old.example.com --recurse-objects --skip-columns=guid --skip-tables=wp_users --all-tables

--dry-run を削除

4.キャッシュを削除する

wp cache flush

※ サーバーへの負荷がかかる可能性があるので注意!

5.マルチサイト特有のテーブルでの置換をする(その前にテストする)

wp search-replace old.example.com new.example.com wp_site wp_blogs --dry-run

オプションの解説

  • old.example.com :旧ドメイン名
  • new.example.com :新ドメイン名
  • wp_site wp_blogs :置換対象のテーブル2つ
  • --dry-run :実際に置換せずにテストでの動作確認

6.マルチサイト特有のテーブルでの置換をする

wp search-replace old.example.com new.example.com wp_site wp_blogs

--dry-run を削除

参照

https://support.pagely.com/hc/en-us/articles/203455200-WordPress-Multisite-Database-Commands