Una posible forma de hacer esta modificación de datos es usar WP-CLI en el terminal.
En primer lugar, debe asegurarse de tener una copia de seguridad y una estrategia de restauración sólida en caso de que algo salga mal. También debe probar este procedimiento en un sistema local o de prueba con una copia de la base de datos en vivo.
Los pasos básicos son, iterar sobre cada sitio de su red y reemplazar las URL de cada sitio utilizando el search-replace
comando WP-CLI .
Aquí hay un 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
Examinemos eso:
for SITE in $(wp site list --field=url);
Ese comienza un bucle para cada línea de la salida del comando dentro $()
y escribe cada línea en la variable $SITE
.
$(wp site list --field=url)
Ese es el site list
comando WP-CLI que le brinda una lista de todas las URL del sitio en su red. Ejecute este comando únicamente, probablemente verá algo como:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Ahora
...); do
solo comenzará la parte del bucle interno.
El comando del bucle interno hace toda la magia (lo dividí en dos líneas usando \
para facilitar la lectura):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Decimos a WP-CLI para buscar para $SITE
(por ejemplo https://your-site.tld/
) y reemplazar con una versión ligeramente modificada: ${SITE/http:/https:}
. Esta es una cadena bash que reemplaza la operación que reemplaza http:
con https:
. (Entonces, resolviendo las variables, el comando se vería así wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
tiene muchas opciones posibles que se describen en la documentación . En el ejemplo usé estos:
--dry-run --precise --network --verbose
--dry-run
y --verbose
son claramente útiles para probar el comando.
--network
aplica la operación de búsqueda y reemplazo también a las tablas de red.
--precise
le dice a WP-CLI que use PHP en lugar de SQL para buscar y reemplazar los valores. Eso asegura que los valores serializados no se corrompan.
Finalmente el ciclo se cierra con
; done
Permítanme enfatizarlo nuevamente: pruebe esto profundamente antes de comenzar a usar esto en la producción. Debe comprender cómo funciona y qué hace WP-CLI. Utilicé WP-CLI antes para realizar tales operaciones de Searach y reemplazar para migrar sitios múltiples a otros nombres de dominio, pero no para cambiar de http
a https
.
Puede haber algunos casos extremos: WP-CLI todavía lee wp-config.php
e intenta encontrar una «red» coincidente en la base de datos utilizando las constantes en wp-config.php
. Si está manipulando un sitio (la base de datos) pero no el otro (las constantes en wp-config.php
), podría tener problemas. Pero para su caso, creo que eso no será un problema, ya que WP generalmente depende DOMAIN_CURRENT_SITE
y PATH_CURRENT_SITE
no cambiarán de todos modos. Pero de nuevo, pruebe esto a fondo.
Con un poco más de magia bash, también podría dividir este ciclo en trozos de 5 o 10 sitios y recorrerlo paso a paso.