De Drupal a WordPress, sin morir en el intento (o sí)

Pues ya tocaba hacer un cambio: tras más de 10 años con drupal, usándolo profesionalmente, aconsejando, e incluso escribiendo algo sobre este gestor de contenidos tocaba quitármelo de enmedio en el blog.

Ya hacía tiempo que desconecté de la evolución de Drupal, y personalmente para el blog tocaba cambiar a otro sistema. Me decanté por wordpress y su plataforma, para evitar el mantenimiento del gestor en el hosting, sus problemas/sustos de seguridad y  dedicarme, con un poco de suerte, a actualizar de vez en cuando los contenidos, que es lo importante.

De drupal (7.6x) a wordpress existen diferentes plugins que facilitan la tarea de importar  pero requiere la versión premium de WP.  La otra opción que encontré factible era importar el contenido de Drupal a WordPress, haciendo pasar el contenido de drupal por un blog de wordpres.

Primero, fue necesario trabajar en drupal básicamente con dos módulos:

Con estos dos módulos, ya se puede generar una vista, y la misma poderla exportar como XML . Desde el menú de vistas de drupal (…/admin/structure/views)  Generamos una vista del contenido añadiendo la opción “Data export” con los campos que se deseen, los míos quedaron así:

drupal_wordpress

Segundo se genera el fichero XML, tipo:

<?xml version="1.0" encoding="UTF-8" ?>
<nodes>
  <item>
    <title>Documento: Hacer realidad la creación del Archivo General de Aragón</title>
    <link>&lt;a href="/blog/realidad-creacion-archivo-general-de-aragon"&gt;vista&lt;/a&gt;</link>
    <content:encoded>&lt;p&gt;&lt;em&gt;Las Cortes de Aragón,.....aquí el contenido
</content:encoded>
    <wp:post_id>329</wp:post_id>
    <wp:post_date>2019-04-29 09:05</wp:post_date>
    <wp:post_date_gmt>2019-04-29 09:05</wp:post_date_gmt>
  </item>
  <item>
....
  </item>
</nodes>

Tercero. Antes de hacer nada más con ese fichero xml obtenido de drupal, tendremos ya creado un blog en wordpress tipo https://miblog12340.wordpress.com/  . En WP,  desde el panel de administración, se realiza una exportación del blog   Herramientas– Exportar– Exportar todo

exportar_wordpress

Se obtiene un zip, y dentro otro fichero XML que servirá de “plantilla” para el contenido proveniente de drupal.

Cuarto. Volvemos al XML de drupal y se edita con notepad++ con todo nuestro contenido.  Y realizamos una serie de “buscar y reemplazar” hasta obtener un listado con esta apariencia:

 

...
<item>
    <title>Documento: Hacer realidad la creación del Archivo General de Aragón</title>
    <link>https://documentalqueridowatson.wordpress.com/blog/realidad-creacion-archivo-general-de-aragon</link>
		<pubDate>2019-04-16T03:22:00.001-05:00</pubDate>
		<dc:creator>jmcollado</dc:creator>
		<guid isPermaLink="false"></guid>
		<description></description>
    <content:encoded><![CDATA[<p><em>Las Cortes de Aragón..... aquí el contenido
]]></content:encoded>
		<excerpt:encoded><![CDATA[]]></excerpt:encoded>
    <wp:post_id>329</wp:post_id>
    <wp:post_date>2019-04-29 09:05:29</wp:post_date>
    <wp:post_date_gmt>2019-04-29 09:05:29</wp:post_date_gmt>
		<wp:comment_status>open</wp:comment_status>
		<wp:ping_status>open</wp:ping_status>
		<wp:post_name></wp:post_name>
		<wp:status>publish</wp:status>
		<wp:post_parent>0</wp:post_parent>
		<wp:menu_order>0</wp:menu_order>
		<wp:post_type>post</wp:post_type>
		<wp:post_password></wp:post_password>
		<wp:is_sticky>0</wp:is_sticky>
		<category domain="post_tag" nicename="gestión-documental"><![CDATA[gestión documental]]></category>
		<category domain="post_tag" nicename="gestión-conocimiento"><![CDATA[gestión conocimiento]]></category>
		<category domain="post_tag" nicename="datos"><![CDATA[datos]]></category>
		<category domain="post_tag" nicename="archivos"><![CDATA[archivos]]></category>
		<wp:postmeta>
			<wp:meta_key>_rest_api_published</wp:meta_key>
			<wp:meta_value><![CDATA[1]]></wp:meta_value>
		</wp:postmeta>
		<wp:postmeta>
			<wp:meta_key>_rest_api_client_id</wp:meta_key>
			<wp:meta_value><![CDATA[-1]]></wp:meta_value>
		</wp:postmeta>
		<wp:postmeta>
			<wp:meta_key>timeline_notification</wp:meta_key>
			<wp:meta_value><![CDATA[1574347473]]></wp:meta_value>
		</wp:postmeta>
		<wp:postmeta>
			<wp:meta_key>_publicize_job_id</wp:meta_key>
			<wp:meta_value><![CDATA[37658716443]]></wp:meta_value>
		</wp:postmeta>
  </item>

Hay que buscar y remplazar  &lt;a  por < , &gt; por > ,  <content:encoded> por <content:encoded><![CDATA[ , </content:encoded> por ]]></content:encoded>,  agregar también con un buscar/remplazar el <pubDate>2019-04-16T03:22:00.001-05:00</pubDate> <dc:creator> que puede ser igual en todos, ojo al <link> y desde </wp:post_date_gmt> también se ha introducido todo a casco porro con un buscar/remplazar para darlo forma con el resto.

Con este fichero, ya cumple el xml normalizado de posts de WordPress aplicando todos estos cambios . Y tenemos unos cuantos <item> que equivalen a posts de wordpress, que seleccionaremos en su totalidad y lo pegaremos en el XML obtenido en el paso Tercero que se ha indicado, sustituyendo los item originales de ese archivo. Justo donde cierra la etiqueta </image>

image_wordpress

Sin olvidar que el XML siga terminando en:

</channel> </rss>

Pues, ya está listo para importar a wordpress: menú herramientas-importar…. y elegir WordPress. Se arrastra el archivo XML y a esperar, unos segundos.

Problemas encontrados: las etiquetas las he tenido que poner para todos igual, se podían haber exportado desde drupal pero requería un poco de trabajo y tiempo (y yo paso)  para darlo forma individual en cada post de wordpress, los links y redirecciones se mantienen, pero wordpress da unas url nuevas a cada post respetando, a su manera, las dadas en <link>  (han quedado escasas vivas…)

El proceso ha sido relativamente sencillo, ha ignorado algunas imágenes, comentarios… y ha costado una hora migrar el contenido de un gestor a otro. No ha sido perfecto, pero ha estado bien para conocer un poco más de las compatibilidades de contenido entre uno y otro gestor.

 

 

 

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .