Aviones en el cielo - Nelio

En una entrada anterior, Ruth te explicó las razones por las que hemos fusionado todos nuestros blogs en un sólo. Básicamente, teníamos casi más blogs que personal trabajando en Nelio, lo cual era insostenible. Como esto no tenía demasiado sentido, tocaba hacer un cambio, y la solución pasaba por rediseñar nuestra web de empresa manteniendo el espíritu de WPrincipiante.

Nuestra web ahora mismo tiene como página principal nuestro blog. Ya que escribimos contenidos que creemos que valen la pena, ponerlos al principio de todo es algo que cae por su propio peso. Y así hemos hecho. Pero no penséis que ha sido tarea fácil, ni mucho menos.

Una vez decidido lo que queríamos hacer, me puse manos a la obra con el proceso de fusión de contenidos de nuestros múltiples blogs. Lo que viene siendo una migración de instalaciones WordPress en toda regla. Y como ocurre en toda migración, la complejidad está en los detalles. Por suerte (o por desgracia ?) no se trata de la primera migración que hago, ya que tengo experiencia en la materia ganada a base de lidiar con los casos de nuestros clientes de migratetowp.com, nuestro servicio de migraciones premium a WordPress.

En esta entrada te voy a ir narrando paso a paso lo que he hecho para conseguir fusionar nuestros contenidos en la web que estás viendo ahora. Lo sé, va a ser una entrada larga y técnica, pero te prometo que voy a poner todo de mi parte para que no sea un tostón. Si aún no has salido corriendo, continuamos…

Antes de migrar, ¿qué tenemos?

Puede parecer una tontería, pero en una migración es igual o más importante saber qué tenemos que saber qué queremos conseguir. Y es que me he encontrado con muchos casos en los que los clientes no tenían ni idea de cómo tenían montada la web que querían migrar a WordPress.

En el caso de Nelio, afortunadamente esto no ha sido así. Aunque Ruth también lo explica en la entrada que te enlacé al principio (y que repito aquí), voy a resumir muy rápido la estructura de webs que teníamos para que no te pierdas.

  • Web de Nelio Software (dominio neliosoftware.com): contenía un par o tres de páginas solamente, incluida la página principal de nuestra empresa, que no vamos a mantener. Además incluye un blog con algo más de 200 entradas en inglés que queremos migrar.
  • Web de Nelio A/B Testing (dominio nelioabtesting.com): contiene toda la información sobre nuestro servicio de test A/B nativo para WordPress, además de un blog con más de 160 entradas en inglés. De aquí sólo vamos a migrar las entradas del blog a la nueva página. Todo lo demás queda intacto, como puedes ver si visitas https://neliosoftware.com/es/testing/.
  • Web de WPrincipiante (dominio wprincipiante.es): contiene más de 250 entradas en español. Esta web desaparece y las entradas pasan a formar parte de la nueva página de Nelio Software.

Todas las webs a fusionar estaban en WordPress, por lo que ya hemos reducido la complejidad de la migración bastante. Cuando te enfrentas a migraciones cuyo origen no es WordPress (sea Drupal, Joomla! o directamente HTML), además de migrar necesitas definir una correspondencia más fina y compleja entre los contenidos origen y la manera de tenerlos en la instalación WordPress destino. Pero como digo, nosotros siempre hemos utilizado WordPress (mas nos vale, siendo especialistas en WordPress…).

Y esto es todo lo que teníamos antes de la fusión, que no es poco. Tres webs, cada una con su blog. Pasemos pues a hablar de la instalación WordPress de destino y de su estructura, que tendría que dar cabida a todo esto.

Qué queríamos conseguir después de la fusión

El objetivo principal era tener un único blog. Esto implica coger todas las entradas de las webs que te acabo de listar y fusionarlas en una única instalación WordPress, de Nelio Software. Tanto las páginas que había en WPrincipiante como las que ya existían en la antigua web de Nelio Software no nos interesaban, ya que tenían muy poco contenido.

En cuanto a la web de Nelio A/B Testing, decidimos mantenerla para evitar problemas. Este servicio es el que nos genera los ingresos que mantienen a Nelio, por lo que preferimos ser prudentes y evitar cambios más allá de mover las entradas del blog a la nueva web de Nelio Software. Como ya te he comentado antes, las páginas de esta web incluyen información del servicio de test A/B y enlazan a la plataforma de pagos del servicio. Y esto no podía estar caído.

Una vez teníamos esto claro, el principal inconveniente surgido en la fase de análisis fue (como no podía ser de otra forma) la manera de gestionar el contenido multiidioma. Teníamos las entradas de WPrincipiante en español, y las entradas de las otras webs en inglés. ¿Como íbamos a gestionar esto?

De hecho, el tema del multilenguaje en WordPress y las diferentes soluciones disponibles da para escribir largo y tendido una entrada entera (algo que por cierto, debería hacer un día de estos ?). Sólo te diré que estudiamos todas las soluciones en profundidad (usar un plugin de WordPress como WPML o Polylang, usar una instalación de WordPress por cada idioma, o usar una instalación multisitio de WordPress con dos subsitios, entre otras opciones más rocambolescas) y al final simplificamos al máximo.

La opción elegida fue montar una instalación de WordPress multisitio con dos subsitios, uno para la versión en inglés y otro para la versión en español. La versión en inglés iría bajo el dominio https://neliosoftware.com y la versión en español bajo https://neliosoftware.com/es/.

Configuración del WordPress multisitio de Nelio.
Configuración del WordPress multisitio de Nelio.

Esta opción encajaba muy bien con nuestras necesidades y nos permite hacer todo lo que queremos, así que por ahora nos funciona a la perfección. Ojo, con esto no quiero decir que usar WPML u otro plugin no sea una buena opción ?.

Visto esto, todas las entradas de WPrincipiante en español irían a parar al subsitio neliosoftware.com/es del multisitio. Por otro lado, la combinación de las entradas del blog de Nelio Software y del blog de Nelio A/B Testing, todo contenidos en inglés, irían al subsitio neliosoftware.com del multisitio.

Antes y después de la migración de Nelio.
Antes y después de la migración de Nelio.

El proceso de migración elegido

Después de la explicación anterior creo que está bastante claro que la idea es fusionar 3 blogs de 3 instalaciones WordPress individuales en una nueva instalación WordPress multisitio con dos subsitios, uno para los contenidos en inglés y otro para los contenidos en español.

Aquí es donde toca hacerse la pregunta del millón: ¿cómo lo hago?

Si alguna vez has tenido que migrar una web a WordPress, seguro que has buscado algún plugin que te importe los contenidos a tu instalación, o incluso habrás buscado alguna empresa o profesional que te ayude en esta labor.

Sobre los plugins, no he encontrado ninguno que permita hacer lo que necesitamos con el nivel de especialización que nosotros queríamos. Tampoco quise probar ninguna solución o plataforma automatizada de migraciones de las que puedes encontrar a la venta por la web, ya que muchos clientes de migratetowp.com las habían probado y después de malas experiencias venían a nosotros para que les migráramos su web a WordPress. Las conozco y son baratas, pero el resultado es pobre.

Visto todo esto, preferí adaptar el programa semiautomático que tenemos para realizar migraciones en migratetowp.com y configurarlo para tratar el caso de la fusión y migración de Nelio Software.

Sin querer entrar en mucho detalle para no aburrirte, se trata de un programa Java que toma como entrada la base de datos MySQL de una instalación (WordPress, Drupal u otra) y la transforma en una base de datos MySQL de una instalación WordPress. Lo que tuve que hacer es modificar el programa para que aceptara como entrada 3 bases de datos MySQL (de las instalaciones de migratetowp.com, nelioabtesting.com y neliosoftware.com) y creara como salida una única base de datos MySQL con todos los contenidos de los 3 blogs fusionados.

Una vez tuviéramos esta base de datos resultante construida, sólo haría falta cargarla en la instalación multisitio destino para así tener la migración lista. Por tanto, el proceso de fusión y migración ha sido así:

  1. Exportar la base de datos MySQL de la instalación WordPress de WPrincipiante.
  2. Exportar la base de datos MySQL de la instalación WordPress de Nelio A/B Testing.
  3. Exportar la base de datos MySQL de la instalación WordPress de Nelio Software.
  4. Limpiar las tres bases de datos anteriores (eliminar tablas innecesarias).
  5. Cambiar el prefijo a las bases de datos MySQL anteriores (wp_ por wprincipiante_, abtesting_ y neliosoftware_).
  6. Exportar la base de datos MySQL de la instalación WordPress multisitio destino.
  7. Cargar todas las tablas de las 4 bases de datos en una nueva base de datos que usaremos durante la migración.
  8. Ejecutar el código de la migración que trabaja en la base de datos de la migración.
  9. Exportar la base de datos de la migración en un archivo .SQL.
  10. Cargar el archivo .SQL resultante en la instalación WordPress multisitio destino.
  11. Celebrar efusivamente si todo ha funcionado como esperábamos ?.

Está claro que el punto más conflictivo de todo el proceso es el número 8, ya que es el que transforma los contenidos y los fusiona en la base de datos destino. Paciencia, este punto te lo explicaré en más detalle un poco más adelante.

En cuanto a los demás, «sólo» se trata de exportar bases de datos y cargarlas otra vez. Para exportar utilizamos phpMyAdmin, que nos lo proporciona nuestro proveedor de hosting automáticamente para acceder a las bases de datos de nuestra instalación. Si no es tu caso, puedes usar el plugin Adminer para WordPress, que es muy parecido a phpMyAdmin.

Para limpiar las bases de datos lo que hemos hecho ha sido eliminar todas aquellas tablas que no nos interesaban. Lamentablemente hay un montón de plugins que crean tablas en tu base de datos pero que al desinstalarlos no las borran. Y si, encontré bastante basura, y eso que nosotros tampoco habíamos instalado demasiados plugins durante todo este tiempo. No me quiero ni imaginar lo que podríamos encontrar en instalaciones más dinámicas que instalen y desinstalen plugins más frecuentemente… ?

Una vez que esas tablas están borradas, hay que eliminar todas esas tablas que no vamos a leer durante la migración. Son tablas que no tienen información relevante. Como en nuestro caso íbamos a fusionar y migrar las entradas de los blogs, las tablas con las que nos quedamos han sido las siguientes:

  • wp_posts y wp_postmeta, que contienen las entradas.
  • wp_users y wp_usermeta, que contienen los usuarios de WordPress.
  • wp_comments, que contiene los comentarios de las entradas.
  • wp_terms, wp_term_taxonomy y wp_term_relationships, que contienen etiquetas y categorías.

Después de esto, sólo tenemos tablas relevantes, pero el problema es que si las queremos cargar todas en una misma base de datos se van a machacar unas a otras ya que comparten el mismo nombre. Es decir, si cargamos wp_posts de WPrincipiante en la base de datos y luego cargamos wp_posts de Nelio A/B Testing, habremos machacado la primera. Y no queremos esto ?.

Opción para reemplazar el prefijo de una o más tablas con phpMyAdmin.
Opción para reemplazar el prefijo de una o más tablas con phpMyAdmin.

Para solucionarlo, cambiaremos wp_ el prefijo de las tablas por el nombre de cada instalación. De esta manera tendremos wprincipiante_posts y abtesting_posts, y así no machacaremos nada al cargar las tablas en una misma base de datos. Para cambiar el prefijo de las tablas puedes usar también phpMyAdmin, que tiene una opción para ello.

En nuestro caso, después de haber realizado todos estos pasos (del 1 al 5) y haber exportado la base de datos de la instalación WordPress multisitio (paso 6), podríamos cargar todas las tablas en una nueva base de datos auxiliar que usaremos durante la migración (paso 7).

Esta base de datos contiene las tablas que te muestro en la siguiente captura:

Tablas preparadas para realizar la fusión de blogs de Nelio.
Tablas preparadas para realizar la fusión de blogs de Nelio.

Puedes ver los tres bloques de tablas con prefijos cambiados correspondientes a las tablas de WPrincipiante, Nelio A/B Testing y la antigua web de Nelio Software. Además, al exportar las tablas de la nueva instalación WordPress multisitio destino vemos que unas tienen el prefijo wp_3_ mientras que otras tienen el prefijo wp_.

Las primeras representas las tablas del subsitio neliosoftware.com/es/ (con contenidos en español) mientras que las otras pertenecen al subsitio neliosoftware.com/ (con contenidos en inglés). A destacar también que en una instalación WordPress multisitio las tablas wp_users y wp_usermeta son compartidas entre todos los subsitios del multisitio, por eso no encontramos ni wp_3_users ni wp_3_usermeta.

Continuará

Hasta aquí hemos llegado. Si yo, que he escrito todo esto, necesito un respiro, estoy seguro de que tu también ?. Te felicito enormemente por haber aguantado hasta el final de esta parte. Has podido ver todo el inicio de la migración, desde el análisis de las webs que teníamos al principio, los diferentes problemas y decisiones tomadas antes de empezar, y la descripción inicial del proceso a seguir.

También te he introducido los 10 pasos (+1 para celebrar ?) de la fusión y migración de contenidos, de los cuales en esta entrada hemos llegado hasta el paso 7. Ya tenemos todas las tablas cargadas en una base de datos auxiliar y todo listo para empezar a fusionar contenidos.

En la segunda parte de esta entrada seguiremos justo donde nos hemos quedado ahora. Podrás ver en detalle cómo hemos movido los datos de cada tabla anterior hasta conseguir fusionar todo en la instalación WordPress multisitio. Por tanto, nos centraremos en el paso 8 del proceso, que me atrevería a decir que es el más arriesgado, debido a todos los detalles que hay que tener en cuenta para no liarla. Y en la tercera parte te explicaré los pasos que tienes que seguir una vez has terminado la migración para evitar problemas típicos.

Lo dicho, te espero en la segunda parte de esta megaentrada. Y si tienes dudas o crees que debería haber hecho algo de forma diferente, no dudes en dejarme un comentario.

Imagen destacada de delfi de la Rua.

Deja una respuesta

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

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.