A veces nuestros proyectos no funcionan. Puede que no fuese el momento indicado, o simplemente no era una idea tan buena como habíamos creído en el momento. Si habías elegido un dominio principal para tu red de blogs (WordPress Network o Multisite) pero ahora necesitas cambiarlo, no hay una solución sencilla. No lo puedes hacer cambiando opciones en la administración, ni retocar ciertas entradas en la base de datos, ni instalar algún plugin que nos vaya a solucionar la papeleta.

El Problema

Para poder cambiar el dominio principal, necesitamos cambiar en la base de datos todas las referencias al dominio antiguo por el nuevo. Seguro que estás pensando: eso no es tan difícil, con buscar&reemplazar ya está. Pues sí y no. En efecto, cambiarás la url correctamente, pero hay un problema con esa solución.

En WordPress hay lo que se conoce “serialiced data”, que resumiendo mucho es un método para almacenar arrays y demás en una base de datos. Esto no es un problema en general, pero para el caso que nos ocupa nos hace las cosas más difíciles. Por ejemplo, si mi dominio principal es www.website.com, éste aparecerá en una entrada de la base de datos con serialiced data como s:15:”www.website.com” ; el número indica el número de caracteres del campo www.website.com ; si el número no coincide entonces se produce un error.

Si nuestro nuevo dominio tiene un número de caracteres distinto al antiguo, buscar&reemplazar no nos arreglará nada, al contrario, estropeará la base de datos. Podríamos elegir un nuevo dominio con el mismo número de caracteres, pero eso es esquivar el problema, no buscar como arreglarlo.

La Solución

Hay un script PHP llamado Search Replace DB , que funciona de la misma manera que buscar&reemplazar, pero además cambia los números por los nuevos, y así arregla el problema en un abrir y cerrar de ojos.

 

interconnectit

La herramienta Search Replace Database de interconnectit.com

Antes de nada, haz una copia de seguridad de la base de datos por lo que pueda pasar. Te recomiendo que uses ssh, si no sabes como puedes leerlo aquí. Debes descargar esta herramienta en su página web, y subirla al servidor. Luego accederás a ella a través del navegador, mira la ruta si no la sabes por ftp o similares. Verás la interfaz que aparece en la foto anterior.

El funcionamiento es bastante sencillo. Debes rellenar los campos replace con el dominio antiguo, with con el nuevo dominio. Después necesita los datos para conectarse a la base de datos, que son nombre, usuario, contraseña y host (normalmente localhost). Ahora, en la parte actions, recomiendo usar primero dry run, lo que hará que se ejecute en modo prueba, buscando y mostrando todos los cambios que haría, pero sin hacerlos realmente. Así puedes comprobar si la herramienta funcionaría. Cuando termine, y si todo salió bien, es cuando debes hacer el live run. Esto hará los cambios y mostrará el resumen cuando termine. Finalmente, cuando hayas terminado con ella, pulsa delete me para borrar el script del servidor, ya que es un riesgo de seguridad importante dejarlo accesible a cualquiera.

Consideraciones Finales

Ahora la base de datos debería estar lista. Pero antes de poder comprobarlo, queda un último paso. En el archivo wp-config.php de WordPress, debes cambiar la línea:

define( ‘DOMAIN_CURRENT_SITE’, ‘nuevodominio’ );

Y ya está. Puedes comprobar que todo funcione como debería. Yo la he usado varias veces, y nunca he tenido problemas. Si además de cambiar el dominio quieres migrar de servidor, te recomiendo nuestra Guía de migración para WordPress.