このデータ変更を行う1つの可能な方法は、ターミナルでWP-CLIを使用することです。
まず最初に、何か問題が発生した場合に備えて、バックアップと確実な復元戦略があることを確認する必要があります。また、ライブデータベースのコピーを使用して、ローカルまたはテストシステムでこの手順をテストする必要があります。
基本的な手順は、ネットワークの各サイトを反復処理し、WP-CLIのsearch-replace
コマンドを使用して各サイトのURLを置き換えることです。
これがbashのワンライナーです:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
それを調べてみましょう:
for SITE in $(wp site list --field=url);
このコマンドは、内部のコマンドの出力の各行に対してループを開始し、$()
各行を変数に書き込みます$SITE
。
$(wp site list --field=url)
これは、ネットワーク内のすべてのサイトURLのリストを提供するWP-CLI site list
コマンドです。このコマンドを単独で実行すると、おそらく次のようになります。
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
今
...); do
内側のループ部分を開始するだけです。
内部ループコマンドはすべての魔法を実行します(\
読みやすくするために使用して2行に分割しています)。
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
私たちはするWP-CLIを教えて検索するために$SITE
(例えばhttps://your-site.tld/
)と置き換える少し変更したバージョンでそれを:${SITE/http:/https:}
。これは、その置き換えbashの文字列の置き換え操作であるhttp:
とhttps:
。(したがって、変数を解決すると、コマンドはのようになりますwp search-replace "http://your-site.tdl/" "https://your-site.tld/"
)。
search-replace
ドキュメントに記載されている多くの可能なオプションがあります。例では、これらを使用しました:
--dry-run --precise --network --verbose
--dry-run
そして、--verbose
明確にコマンドをテストするために役立ちます。
--network
検索と置換操作をネットワークテーブルにも適用します。
--precise
SQLの代わりにPHPを使用して値を検索および置換するようにWP-CLIに指示します。これにより、シリアル化された値が破損しないようにします。
最後に、ループは
; done
もう一度強調しましょう。本番環境でこれを使い始める前に、これを深くテストしてください。それがどのように機能し、WP-CLIが何をするかを理解する必要があります。以前にWP-CLIを使用して、このような検索と置換操作を実行してマルチサイトを他のドメイン名に移行しましたが、からへの切り替えはhttp
していませんでしたhttps
。
いくつかのエッジケースがある可能性があります。WP-CLIは引き続きを読み取り、wp-config.php
の定数を使用してデータベースで一致する«network»を見つけようとしますwp-config.php
。1つのサイト(データベース)を操作していて、他のサイト(の定数wp-config.php
)を操作していない場合、問題が発生する可能性があります。しかし、あなたの場合のために、私はWPは、一般的に依存しているとして、それは問題ではないだろうと思いDOMAIN_CURRENT_SITE
とPATH_CURRENT_SITE
、彼らはとにかく変更されません。しかし、もう一度、これを徹底的にテストします。
もう少しbashマジックを使用して、このループを5サイトまたは10サイトのチャンクに分割し、ステップごとに実行することもできます。