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-replaceBefehl 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 listBefehl , 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-replacehat viele mögliche Optionen, die in der Dokumentation beschrieben werden . Im Beispiel habe ich diese verwendet:
--dry-run --precise --network --verbose
--dry-runund --verbosesind eindeutig hilfreich beim Testen des Befehls.
--network wendet den Such- und Ersetzungsvorgang auch auf die Netzwerktabellen an.
--preciseWeist 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 httpzu zu wechseln https.
Es kann einige Randfälle geben: WP-CLI liest das weiterhin wp-config.phpund 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_SITEund , PATH_CURRENT_SITEund 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.