Un modo possibile per eseguire questa modifica dei dati è utilizzare WP-CLI sul terminale.
Prima di tutto, dovresti assicurarti di avere un backup e una solida strategia di ripristino nel caso qualcosa vada storto. È inoltre necessario testare questa procedura su un sistema locale o di prova con una copia del database live.
I passaggi di base sono, per scorrere su ciascun sito della rete e sostituire gli URL di ciascun sito utilizzando il search-replace
comando WP-CLI .
Ecco una bash one-liner:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Esaminiamo che:
for SITE in $(wp site list --field=url);
Quello avvia un ciclo per ogni riga dell'output del comando all'interno $()
e scrive ogni riga nella variabile $SITE
.
$(wp site list --field=url)
Questo è il site list
comando WP-CLI che ti fornisce un elenco di tutti gli URL dei siti nella tua rete. Esegui solo questo comando, probabilmente vedrai qualcosa del tipo:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Adesso
...); do
inizierà solo la parte del loop interno.
Il comando ciclo interno fa tutta la magia (l'ho diviso in due righe usando \
per leggibilità):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Raccontiamo WP-CLI per la ricerca per $SITE
(ad esempio https://your-site.tld/
) e sostituirlo con una versione leggermente modificata: ${SITE/http:/https:}
. Questa è una stringa bash che sostituisce l'operazione che sostituisce http:
con https:
. (Quindi risolvendo le variabili, il comando sarebbe simile wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
ha molte opzioni possibili che sono descritte nella documentazione . Nell'esempio ho usato questi:
--dry-run --precise --network --verbose
--dry-run
e --verbose
sono chiaramente utili per testare il comando.
--network
applica l'operazione di ricerca e sostituzione anche ai tab di rete.
--precise
dice a WP-CLI di usare PHP anziché SQL per cercare e sostituire i valori. Ciò garantisce che i valori serializzati non vengano danneggiati.
Alla fine il ciclo si chiude con
; done
Consentitemi di enfatizzarlo di nuovo: verificatelo profondamente prima di iniziare a utilizzarlo in produzione. Dovresti capire come funziona e cosa fa WP-CLI. Ho usato WP-CLI prima di eseguire tali ricerche e sostituire operazioni per migrare siti multipli verso altri nomi di dominio, ma non per passare da http
a https
.
Potrebbero esserci alcuni casi limite: WP-CLI legge ancora wp-config.php
e prova a trovare una «rete» corrispondente nel database usando le costanti in wp-config.php
. Se stai manipolando un sito (il database) ma non l'altro (le costanti in wp-config.php
) potresti avere dei problemi. Ma per il vostro caso, penso che non sarà un problema come WP si basa in genere su DOMAIN_CURRENT_SITE
e PATH_CURRENT_SITE
ed essi non cambierà comunque. Ma ancora una volta, prova questo approfonditamente.
Con un po 'più di magia bash, puoi anche dividere questo loop in blocchi di 5 o 10 siti e attraversarlo passo dopo passo.