Buscar y reemplazar URLs en toda la base de datos (respetando datos serializados)

Autor:
php code
[show-code]

Este snippet en PHP te permite actualizar una URL antigua por una nueva en toda la base de datos de WordPress, algo especialmente útil tras migrar un proyecto de un dominio a otro o de un subdirectorio a la raíz (por ejemplo, de https://tudominio.com/store a https://nuevo.tudominio.com).

A diferencia de un simple REPLACE en SQL, este script:

  • Carga el entorno de WordPress usando wp-load.php.
  • Utiliza $wpdb y maybe_unserialize() para no romper datos serializados (opciones, metadatos, constructores visuales, etc.).
  • Recorre todas las tablas y todas las columnas de texto, actualizando únicamente las filas donde realmente aparece la URL antigua.

👉 Cómo usarlo

  1. Haz una copia de seguridad de la base de datos (imprescindible).
  2. Copia el snippet en un archivo, por ejemplo: search-replace-url.php.
  3. Sube el archivo a la raíz de tu instalación (donde está wp-config.php).
  4. Edita las variables $old_url y $new_url con tus dominios.
  5. Accede a https://tusitio.com/search-replace-url.php y deja que termine el proceso.
  6. Comprueba que la web funciona correctamente.
  7. Borra el archivo del servidor cuando hayas terminado.

Ideal para:

  • Migraciones rápidas sin plugins adicionales.
  • Entornos donde prefieres tener control total sobre lo que se ejecuta.
  • Casos en los que hay muchos datos serializados (constructores, WooCommerce, plugins de SEO, etc.).