WordPress
wp-cli
Search-Replace-DB

WP-CLIを使ってWordPressのマルチサイトのURLを一括置換する方法

WP-CLIの便利機能の一つ、検索置換ができるwp search replaceを使ってマルチサイトのURL一括置換をやってみたところ以下のようにエラーがでてしまいました。

Error: Site 'example.com' not found. Verify--url=matches an existing site.

やりかたは公式にも書いてあるのですが、ちょっとつまづいたので方法をご紹介します。

マルチサイト用のデータベース変換

wp search-replace | WordPress Developer Resources https://developer.wordpress.org/cli/commands/search-replace/

マルチサイトの場合--network を行うことで検索置換できるらしいのですが、やってみたところデータベースエラーになりました。そこで--urlを使って置換します。

本番用のマルチサイトのデータベースを開発用のデータベースに変換する

$ wp search-replace --url=example.com example.com example.dev

本番:example.com
開発:example.dev

うまくいった!でもメインサイトのみで、子サイトはDBエラー。

子サイト用のtableを変換する

子サイト用のtableを置換するために--networkオプションを使ってマルチサイトの置換します。
wp search-replace --network 'https://example.test' 'https://example.dev'

これでメインも子サイトもうまくいきました!
子サイトが2つ以上の場合はためしていませんが、全table対象のためおそらく大丈夫なはずです。