Buscar y reemplazar URLs en la base de datos
Al migrar un sitio WordPress a un nuevo dominio o de HTTP a HTTPS, las URLs antiguas quedan almacenadas en múltiples tablas de la base de datos. Estas queries las actualizan de forma manual y quirúrgica.
Casos de uso: migración de HTTP a HTTPS, cambio de dominio, mover de un subdominio al dominio raíz, migrar de entorno local a producción.
-- IMPORTANTE: Hacer backup antes de ejecutar.
-- Para datos serializados usa WP-CLI en su lugar:
-- wp search-replace 'http://viejo.com' 'https://nuevo.com' --all-tables
-- 1. Contenido de los posts
UPDATE wp_posts
SET post_content = REPLACE(post_content,
'http://viejo.com',
'https://nuevo.com'
);
-- 2. GUIDs de los posts
UPDATE wp_posts
SET guid = REPLACE(guid,
'http://viejo.com',
'https://nuevo.com'
);
-- 3. Metadatos de posts
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value,
'http://viejo.com',
'https://nuevo.com'
)
WHERE meta_value LIKE '%http://viejo.com%';
-- 4. Opciones del sitio (siteurl, home, etc.)
UPDATE wp_options
SET option_value = REPLACE(option_value,
'http://viejo.com',
'https://nuevo.com'
)
WHERE option_value LIKE '%http://viejo.com%';
- REPLACE() — Función SQL que sustituye todas las ocurrencias de una cadena dentro de un campo de texto.
- WHERE meta_value LIKE ‘%…’ — Filtra solo las filas que contienen la URL antigua para evitar actualizaciones innecesarias y acelerar la query.
- Datos serializados — Las queries SQL no gestionan datos PHP serializados (usados por plugins como ACF). Para esos casos usar siempre
wp search-replacede WP-CLI. - Orden importante — Actualizar primero
wp_optionspara quesiteurlyhomeapunten al nuevo dominio antes de que WordPress intente cargar nada.
