Esta mañana me encontré con la necesidad de hacer un cambio masivo en una instalación de WordPress con miles de entradas, metadatos y opciones acumuladas durante años.
Estamos hablando de más de 3 mil URLs, y teníamos que cambiar unas imágenes que se habían quedado obsoletas. Era cosa de unas 10 rutas, repartidas por todos los posts y páginas. También teníamos estas imágenes insertadas en tablas de un plugin de terceros.
Una cosa divertida, vaya.
Hacerlo a mano era directamente inviable. Tirar de SQL a pelo tampoco me convencía por el riesgo de romper datos serializados. El plugin de terceros (un simple creador de pestañas en productos de WooCommerce) guarda los datos de manera serializada.
Ahí es donde entra WP-CLI.
El poder del terminal
La base es esta:
wp search-replace 'http://dominio.com/ruta-antigua' 'https://dominio.com/ruta-nueva'
El problema es que no conviene ejecutarlo del tirón sin revisar antes.
Primero, simulación con --dry-run
Antes de tocar nada:
wp search-replace 'http://dominio.com/ruta-antigua' 'https://dominio.com/ruta-nueva' --dry-run
Esto te dice cuántos cambios haría en cada tabla, pero sin modificar datos.
Para mí este paso es obligatorio, porque te evita sustos y te da una estimación real del impacto.
Ejecución real (la versión segura)
Cuando el resultado del dry-run cuadra, ya sí:
wp search-replace 'http://dominio.com/ruta-antigua' 'https://dominio.com/ruta-nueva' \
--all-tables-with-prefix \
--skip-columns=guid \
--precise \
--report-changed-only
Opciones clave:
--all-tables-with-prefix: incluye todas las tablas del prefijo de WordPress.--skip-columns=guid: evita tocarguid, que normalmente no deberías reescribir.--precise: usa un modo más preciso (más lento, pero más fiable).--report-changed-only: muestra solo tablas con cambios reales.
Por qué usar WP-CLI y no SQL directo
La gran ventaja es que wp search-replace maneja correctamente valores serializados de WordPress.
Si haces un UPDATE ... REPLACE(...) en SQL sin controlar esto, puedes dejar datos corruptos en wp_options o en metadatos de plugins.
Con WP-CLI ese riesgo baja muchísimo.
Recomendaciones rápidas antes de lanzarlo
- Haz backup de base de datos antes del cambio.
- Prueba primero en staging si tienes entorno de pruebas.
- Vacía cachés (plugin, servidor, CDN) al terminar.
- Revisa especialmente menús, widgets y ajustes de plugins.
Resultado
Con una simulación previa, el comando correcto y backup hecho, puedes resolver miles de reemplazos en WordPress sin dramas.