Como Migrar un Sitio en WordPress a Otro Dominio Diferente

Como Migrar un Sitio en WordPress a Otro Dominio Diferente




Recientemente un cliente me contacto comentando que había tenido problemas con el proveedor que le llevaba el mantenimiento de su sitio web. Su sitio está implementado con wordpress, entre los problemas que tenía estaba el que su proveedor se negaba a darle los accesos FTP para poder hacer un respaldo del sitio porque tenía intenciones de cambiar de hosting, el cliente solo tenia el usuario y password del panel de control de su sitio, nunca había tenido problemas, ahora necesitaba hacer cambios y cambiar de servicio de hosting y se le presentaba el problema de no poder respaldar todo su sitio, incluso su actual proveedor se negaba a darle los accesos para poder cambiar los DNS de su dominio.

Delante de toda esta negativa por parte del proveedor, el cliente toma la decisión de cambiar definitivamente de proveedor incluso a sí tenga que perder el dominio pero con la salvedad de que quiere perder todo el contenido, configuración de su sitio web.

Planteo una solución rápida para poder respaldar todo el sitio desde wordpress sin necesidad de hacerlo via FTP e intentar migrarlo a otro dominio.

Existe un plugin que te permite respaldar todo la raíz de tu sitio web wordpress e incluso poder programar para que lo haga cada cierto periodo de tiempo y te lo envie a tu cuenta de google drive de forma automática, este respaldo incluye todo los archivos y carpetas de wordpress e incluso la base de datos. El Plugin en cuestion se llama : Google Drive for WordPress.

Funciona al 100% hacer una restauración cuando hemos perdido todo en nuestro dominio y deseamos restaurar todo de nuevo, el sitio queda intacto, claro obviando todo lo que se ha incluido desde el último respaldo hasta la fecha que se daño 😉 .

El problema se presenta cuando ees respaldo queremos restaurarlo en otro nombre de dominio, ejemplo : nuestro sitio actualmente se encuentra en ejemplo.com y deseamos hacer la restauracion en ejemplo.net.

Aun copiando todo a la raiz del otro dominio y restaurando la base de datos, actualizando el wp-config.php con los nuevos parámetros de servidor de base de datos, usuario y  password, el sitio simplemente no funciona porque siempre se envia a la dirección anterior : ejemplo.com.

Porque sucede esto ? Porque wordpress y algunos Theme guardan información en los post , configuración del sitio , con la URL absoluta del dominio, esto quiere decir que si hacen referencia a algun recurso dentro de las carpetas de wordpress, lo hace asi : http://www.ejemplo.com/wp-content/upload/2013/06/imagen01.jpg en vez de guardar la URL relativa asi :  /../wp-content/upload/2013/06/imagen01.jpg.

De cualquier manera esto era un problema grave porque cuando vas depurar la base de datos te puedes encontrar con tablas que pueden contener miles de registro con esta situación y hacer el cambio registro a registro puede ser desalentador y frustrante sin garantía de todo quede bien.

Para resolver este problema, como buen desarrollador pensé, debe haber alguna función en MySQL que me permita : Primero identificar en las tablas los registro que guardan el nombre del dominio antiguo y segundo reemplazar solo el nombre del dominio sin alterar el resto de la información.




Y efectivamente MySQL tiene entre muchas funciones para el manejo de cadena de caracteres pero las que me ayudaron a resolver fueron 2 muy específicas :

  1. La Función LOCALE , cuya sintaxis es la siguiente :  LOCALE( ‘cadena a buscar’,’cadena en la que se busca’) , si la cadena a buscar se encuentra en la cadena en la que se busca, la función devuelve un valor mayor a cero , si no existe devuelve cero. Ejemplo de como se implementa :  SELECT * FROM `wp_options` where LOCATE(‘http://ejemplo.com’, option_value) > 0
  2. La Función REPLACE, cuya sintaxis es la siguiente : Replace (‘cadena en la que se busca’, ‘cadena que se busca’, ‘cadena a reemplazar’ ) , si la función encuentra la cadena, la reemplaza y devuelve la cadena modificada. Ejemplo de como se implementa : UPDATE `wp_options` SET option_value  =  Replace ( option_value, ‘http://ejemplo.com’, ‘http://ejemplo.net’ )

A continuación las tablas nativas de WordPress en donde tuve que hacer los cambios, dependiendo de cada Theme, se generan otras tablas que son diferentes en cada proveedor del Theme.

SELECT * FROM `wp_options` WHERE LOCATE(‘http://ejemplo.com’,option_value) > 0

UPDATE `wp_options` SET option_value = Replace ( option_value, ‘http://ejemplo.com’, ‘http://ejemplo.net’ )

SELECT * FROM `wp_postmeta` WHERE LOCATE(‘http://ejemplo.com’,meta_value) > 0

UPDATE `wp_postmeta` SET meta_value = Replace ( meta_value, ‘http://ejemplo.com’, ‘http://ejemplo.net’ )

SELECT * FROM `wp_posts` WHERE LOCATE(‘http://ejemplo.com’,post_content) > 0

UPDATE `wp_posts` SET post_content = Replace ( post_content, ‘http://ejemplo.com’, ‘http://ejemplo.net’ )

SELECT * FROM `wp_posts` WHERE LOCATE(‘http://ejemplo.com’,guid) > 0

UPDATE `wp_posts` SET guid = Replace ( guid, ‘http://ejemplo.com’, ‘http://ejemplo.net’ )

Con esta técnica su sitio respaldado con Google Drive for WordPress puede estar migrado a su nuevo dominio en poco menos de 2 horas, en mi caso lo que más me llevo tiempo fue descargar el respaldo y subirlo al nuevo server.

Recomendaciones Finales :

  1. Cuando vaya a hacer su sitio web compre el dominio usted mismo y asegúrese de tener el control, si por el contrario va delegar esto en un tercero, exija que le envíen las claves de acceso para gestionar su dominio.
  2. Cuando contrate servicio de hosting asegúrese de tener control sobre el server que esta contratando, si esta comprando una solución llave en mano exija por lo menos que le envíen las claves de accesos FTP en donde se encuentra su solución, siempre es necesario subir contenidos via FTP que son más pesados si se hacen por un web panel.
  3. Haga respaldo regularmente de su sitio web, base de datos y archivos fuentes del sitio, en el caso de wordpress existen muchos plugin que le pueden ayudar en esta tarea.
  4. Mantenga el control y acceso a su sitio web en todo momento.




Share on Facebook
Bookmark this on Yahoo Bookmark
[`tweetmeme` not found]
Share on LinkedIn


4 Comments

  1. Pingback: Bitacoras.com

  2. Aparenta ser una buena solucion, gracias por el aporte

  3. ¡Fantástico! Uno nunca sabe cuando se va a requerir este tipo de solución. En mi caso, el sitio era elpoderenti.com y la idea es restaurar en activaelpoderenti.com… ningún problema con proveedores ni hosting ni nada de eso, simplemente que hubo un valiente que nos compró el nombre de dominio (sin el contenido) a un precio que no nos pudimos negar y entonces compramos el nuevo… ejecutaré y probaré, pero como programador, diría que tengo una certeza del 99% de que funcionará.

    Gracias por el aporte.

    Jorge

Deja un comentario

CommentLuv badge