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-replacecomando 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 listcomando 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-replaceha molte opzioni possibili che sono descritte nella documentazione . Nell'esempio ho usato questi:
--dry-run --precise --network --verbose
--dry-rune --verbosesono chiaramente utili per testare il comando.
--network applica l'operazione di ricerca e sostituzione anche ai tab di rete.
--precisedice 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 httpa https.
Potrebbero esserci alcuni casi limite: WP-CLI legge ancora wp-config.phpe 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_SITEe PATH_CURRENT_SITEed 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.