Consulta SQL para remplazar URL de una web en WordPress

Consulta SQL para reemplazar URLs de una web en WordPress

Cuando trabajas en desarrollo web es bastante habitual tener que cambiar las rutas de un proyecto. El caso más típico es mover una web del servidor de pruebas al definitivo, pero no es el único. También ocurre cuando cambia el dominio, cuando pasamos de http a https o cuando arrastramos URLs antiguas que se han quedado incrustadas en el contenido.

WordPress permite modificar la URL principal desde su panel de opciones, pero cualquiera que haya trabajado un poco con plugins, constructores visuales o temas algo complejos sabe que eso, muchas veces, no es suficiente. Hay datos que se quedan guardados en la base de datos y que no se actualizan automáticamente, y ahí es donde empiezan los problemas.

Cuando esto sucede, es bastante común encontrar contenido con URLs absolutas incrustadas en páginas o entradas, imágenes que siguen apuntando al dominio antiguo o configuraciones internas de plugins que no se actualizan con ese cambio.

En proyectos sencillos puede que no se note, pero en cuanto la web tiene algo más de recorrido empiezan a aparecer enlaces rotos, recursos que no cargan o comportamientos extraños que no siempre se asocian directamente al cambio de dominio.

En esos casos, una consulta SQL puede ser una solución rápida y efectiva, siempre que sepas exactamente lo que estás tocando, claro. En este artículo vamos a ver cómo hacerlo, pero aviso a navegantes, porque si no te manejas bien con estas cosas pueden aparecer problemas serios.

Antes de tocar la base de datos

Antes de ejecutar cualquier consulta SQL directa conviene parar un momento y revisar lo básico. Contar con una copia de seguridad reciente de la base de datos es imprescindible, y si el proyecto lo permite, probar el cambio primero en un entorno de staging evita muchos sustos innecesarios. Una vez aplicado el reemplazo, merece la pena revisar la web con calma, navegar por distintas secciones y comprobar que todo funciona como debería, especialmente si se trata de una tienda online o un proyecto en producción.

Estas precauciones pueden parecer excesivas, pero en la práctica suelen marcar la diferencia entre un cambio limpio y una incidencia que te va a hacer sudar sangre. Esto es algo a lo que inicialmente no le prestaba mucha atención, pero tras cepillarme (con perdón), varias bases de datos, se ha convertido casi en un tic en mi día a día. ¡Y bendito tic!

Reemplazar URLs mediante SQL en WordPress es una técnica útil y perfectamente válida en determinados escenarios, pero también puede convertirse en un problema si se aplica sin conocer sus limitaciones. Saber cuándo usarla y cuándo optar por alternativas más seguras marca la diferencia entre una migración limpia y una tarde entera intentando arreglar algo que se rompió sin avisar.

Como recomendación final, ante la duda, lo mejor es que lo dejes en manos de un profesional o puedes liarla bastante. Tendrás que pagar, como es lógico, pero te aseguro que sale más barato que tener que arreglar después una base de datos estropeada. Ahora metamos las manos en la masa.

Consulta SQL para reemplazar una URL en WordPress

Si tienes claro que necesitas hacer un reemplazo directo en la base de datos, vamos a ver cómo hacerlo a través de una serie de consultas en la tablas que contienen los datos.

Esto puedes hacerlo accediendo a tu gestor habitual de bases de datos, como por ejemplo phpMyAdmin, y ejecutando lo siguiente:

UPDATE wp_options 
SET option_value = REPLACE(option_value, 'urlanterior.com', 'urlnueva.com') 
WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts 
SET guid = REPLACE(guid, 'urlanterior.com', 'urlnueva.com');

UPDATE wp_posts 
SET post_content = REPLACE(post_content, 'urlanterior.com', 'urlnueva.com');

UPDATE wp_postmeta 
SET meta_value = REPLACE(meta_value, 'urlanterior.com', 'urlnueva.com');

Antes de ejecutarla conviene revisar dos detalles básicos. El primero es sustituir las rutas de ejemplo por las reales (lógico), y el segundo comprobar el prefijo de las tablas, ya que no siempre es wp_ si durante la instalación se cambió por seguridad.

Desde mi experiencia como desarrollador WordPress freelance, este tipo de consultas pueden tener sentido cuando el reemplazo afecta únicamente a campos de texto plano, cuando se trata de una web sencilla o cuando se tiene muy claro qué tablas y campos se están modificando.

Advertencia importante sobre datos serializados

WordPress y muchos de sus plugins no almacenan toda la información como texto plano. En numerosas tablas, especialmente en wp_postmeta y wp_options, se utilizan datos serializados. Esto significa que los valores se guardan junto con la longitud exacta de cada cadena.

Cuando se ejecuta un REPLACE() directo sobre ese tipo de datos, el texto cambia pero la longitud no se actualiza, lo que provoca que el contenido quede corrupto. El resultado puede ir desde errores puntuales hasta una web completamente rota, a veces sin mensajes claros que indiquen qué ha fallado.

Este problema es especialmente habitual en proyectos que utilizan constructores visuales, campos personalizados avanzados o tiendas online. Por eso, aunque la consulta anterior puede funcionar en algunos escenarios concretos, no es una solución universal ni segura en todos los casos.

Alternativas más seguras para reemplazar URLs

Cuando hay datos serializados de por medio, lo más recomendable es utilizar herramientas que entienden cómo WordPress guarda la información internamente y que ajustan automáticamente las longitudes de los valores. Una opción muy habitual en entornos profesionales es usar WP-CLI y su comando de búsqueda y reemplazo, que permite actualizar URLs de forma controlada sin romper datos sensibles.

También existen plugins específicos pensados para este tipo de tareas, que realizan el reemplazo respetando la serialización y resultan especialmente útiles cuando no se tiene acceso por consola o se trabaja con proyectos más pequeños. En otros casos, sobre todo en desarrollos a medida, puede tener sentido ejecutar scripts controlados que solo se lanzan una vez y que han sido revisados con calma antes de aplicarlos.

No siempre es necesario recurrir a estas alternativas, pero en proyectos medianos o complejos suelen ser la opción más segura. Si estás trabajando con un proyecto complejo o tienes dudas sobre cómo abordar el cambio, merece la pena hacerlo con calma o contar con ayuda profesional. En muchos casos, ese tiempo extra se traduce en menos problemas después.

Jesús Tovar - Desarrollador web freelance Sevilla

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *