Eine Möglichkeit, diese Datenänderung durchzuführen, ist die Verwendung von WP-CLI auf dem Terminal.
Zunächst sollten Sie sicherstellen, dass Sie über eine Sicherungs- und eine solide Wiederherstellungsstrategie verfügen, falls etwas schief geht. Sie sollten dieses Verfahren auch auf einem lokalen oder Testsystem mit einer Kopie der Live-Datenbank testen.
Die grundlegenden Schritte bestehen darin, über jeden Standort Ihres Netzwerks zu iterieren und die URLs jedes Standorts mit dem search-replace
Befehl von WP-CLI zu ersetzen .
Hier ist ein Bash-Einzeiler:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Lassen Sie uns das untersuchen:
for SITE in $(wp site list --field=url);
Dieser startet eine Schleife für jede Zeile der Ausgabe des Befehls $()
und schreibt jede Zeile in die Variable $SITE
.
$(wp site list --field=url)
Dies ist der WP-CLI- site list
Befehl , mit dem Sie eine Liste aller Site-URLs in Ihrem Netzwerk erhalten. Führen Sie nur diesen Befehl aus. Sie werden wahrscheinlich Folgendes sehen:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Jetzt
...); do
startet nur den inneren Schleifenteil.
Der Befehl für die innere Schleife macht die ganze Magie (ich habe ihn zur \
besseren Lesbarkeit in zwei Zeilen aufgeteilt ):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Wir sagen WP-CLI suchen für $SITE
(zB https://your-site.tld/
) und ersetzen es mit einer leicht modifizierten Version: ${SITE/http:/https:}
. Dies ist eine Operation bash Zeichenfolge ersetzt , dass ersetzt http:
mit https:
. (Wenn Sie also die Variablen auflösen, sieht der Befehl so aus wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
hat viele mögliche Optionen, die in der Dokumentation beschrieben werden . Im Beispiel habe ich diese verwendet:
--dry-run --precise --network --verbose
--dry-run
und --verbose
sind eindeutig hilfreich beim Testen des Befehls.
--network
wendet den Such- und Ersetzungsvorgang auch auf die Netzwerktabellen an.
--precise
Weist WP-CLI an, PHP anstelle von SQL zum Suchen und Ersetzen der Werte zu verwenden. Dadurch wird sichergestellt, dass serialisierte Werte nicht beschädigt werden.
Schließlich wird die Schleife mit geschlossen
; done
Lassen Sie es mich noch einmal betonen: Testen Sie dies gründlich, bevor Sie es in der Produktion einsetzen. Sie sollten verstehen, wie es funktioniert und was WP-CLI tut. Ich habe zuvor WP-CLI verwendet, um solche Searach-Operationen durchzuführen und Operationen zu ersetzen, um Multisites auf andere Domain-Namen zu migrieren, aber nicht, um von http
zu zu wechseln https
.
Es kann einige Randfälle geben: WP-CLI liest das weiterhin wp-config.php
und versucht, mithilfe der Konstanten in ein passendes «Netzwerk» in der Datenbank zu finden wp-config.php
. Wenn Sie eine Site (die Datenbank) manipulieren, aber nicht die andere (die Konstanten in wp-config.php
), können Probleme auftreten. Aber für Ihren Fall denke ich , dass das kein Problem sein wird , wie sie typischerweise WP verlässt sich auf DOMAIN_CURRENT_SITE
und , PATH_CURRENT_SITE
und sie werden sowieso nicht ändern. Aber noch einmal, testen Sie dies gründlich.
Mit etwas mehr Bash-Magie können Sie diese Schleife auch in Blöcke von 5 oder 10 Sites aufteilen und Schritt für Schritt durchlaufen.