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í:
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><a href="/blog/realidad-creacion-archivo-general-de-aragon">vista</a></link> <content:encoded><p><em>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
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 <a por < , > 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>
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.