{"id":383,"date":"2020-07-24T18:39:25","date_gmt":"2020-07-24T18:39:25","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=383"},"modified":"2020-07-29T09:08:10","modified_gmt":"2020-07-29T09:08:10","slug":"migracion-de-blogengine-net-a-wordpress","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/migracion-de-blogengine-net-a-wordpress\/","title":{"rendered":"Migraci\u00f3n de BlogEngine.NET a WordPress"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Siempre me hab\u00eda justado, estaba en .NET pero el tiempo ha dejado claro al vencedor&#8230; La migraci\u00f3n de datos entre sistemas puede ser siempre un punto delicado, y esta vez no ser\u00e1 una excepci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de dar vueltas para hacerlo de la manera m\u00e1s r\u00e1pida y efectiva, ha tocado utilizar <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/Dillie-O\/blogmigrator\" target=\"_blank\">Blog Migrator<\/a>. El primer paso es exportar el contenido accediendo a un men\u00fa, que <a href=\"https:\/\/github.com\/rxtur\/BlogEngine.NET\/search?utf8=%E2%9C%93&amp;q=export\" target=\"_blank\" rel=\"noreferrer noopener\">extra\u00f1amente qued\u00f3 oculto en todas las versiones<\/a>, ponemos la URL directamente: http:\/\/www.miblog.com\/admin\/#\/settings\/<strong>advanced<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tendremos accesible la opci\u00f3n de generar un fichero XML para exportar:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"412\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/menu_advanced.jpg\" alt=\"\" class=\"wp-image-481\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/menu_advanced.jpg 770w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/menu_advanced-300x161.jpg 300w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/menu_advanced-768x411.jpg 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Por otro lado moveremos todas las im\u00e1genes y ficheros del directorio predeterminado \u00abapp_data\\Files\u00bb al nuevo \u00abwp-content\\uploads\u00bb y aprovecharemos que tenemos el fichero XML para cambiar las rutas a \u00ab\/image.axd?picture=ejemplo.jpg\u00bb por \u00ab\/wp-content\/uploads\/ejemplo.jpg\u00bb.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Todos los cambios que debamos hacer, mejora ahora sobre el fichero. En el programa para la migraci\u00f3n existe una limitaci\u00f3n ya que BlogEngine genera un GUID en lugar de un n\u00famero entero para identificar los post y las p\u00e1ginas. La opci\u00f3n m\u00e1s sencilla, si no son demasiadas entradas, es sustituir en el XML \u00ab&lt;post id=\u00bb8172b5b0-958f-4eb7-bfe3-30cd839f5189&#8243;&#8230; \u00bb por \u00ab&lt;post id=\u00bb1&#8243;&#8230; de tal forma que iremos enumer\u00e1ndolos secuencialmente. Otra opci\u00f3n es modificar el c\u00f3digo fuente del programa para que lo haga directamente ;D<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El <a href=\"https:\/\/github.com\/Dillie-O\/blogmigrator.git\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00f3digo fuente del programa<\/a> esta disponible para descargar y compilar desde Visual Studio, no he encontrado un EXE ya preparado as\u00ed que dejo <a href=\"https:\/\/1drv.ms\/u\/s!AsYEUc1fqfVgjJMQoMvzpUntdfrOBg?e=Kyh99j\" target=\"_blank\" rel=\"noreferrer noopener\">enlace con la publicaci\u00f3n del ejecutable aqu\u00ed<\/a>. Si hemos llegado hasta este punto&#8230; tenemos gran parte hecha, solo nos queda configurar Blog Migrator seleccionando el fichero XML de or\u00edgen y como destino nuestra instalaci\u00f3n de WordPress indicando la URL, usuario y contrase\u00f1a. Es importante que los autores de los mensajes est\u00e9n ya creados.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"686\" height=\"924\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/blogmigrator_done.jpg\" alt=\"\" class=\"wp-image-482\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/blogmigrator_done.jpg 686w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2020\/blogengine\/blogmigrator_done-223x300.jpg 223w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Mantendr\u00e1 el contenido, la fecha de los mensajes, pero no las categor\u00edas y tags, por lo menos no en mi caso, as\u00ed que habr\u00e1 que aprovechar para reorganizarlos. Si adem\u00e1s queremos mantener las URL con el <a rel=\"noreferrer noopener\" href=\"https:\/\/es.wordpress.org\/plugins\/redirection\/\" target=\"_blank\">plugin Redirection<\/a> nos facilitar\u00e1 encontrar posibles errores en la importaci\u00f3n. Otros plugin que nos facilitar\u00e1 la transici\u00f3n es <a rel=\"noreferrer noopener\" href=\"https:\/\/es.wordpress.org\/plugins\/media-library-plus\/\" target=\"_blank\">Media Library Folders<\/a>, que nos permite sincronizar una estructura de carpetas y acceders desde la galer\u00eda de manera r\u00e1pida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No ser\u00e1 el primero ni el \u00faltimo proyecto Open Source en el que la comunidad no es muy numerosa y acaban desapareciendo&#8230; esperemos que resurja como alternativa viable en .NET alg\u00fan d\u00eda&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Otros programas para migraci\u00f3n:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/blogs.biztalk360.com\/migrating-your-blog-from-any-blogml-based-platform-to-wordpress-2\/\" target=\"_blank\">BlogML Helper<\/a><\/li><li><a href=\"https:\/\/github.com\/developdaly\/BlogML-Importer-for-WordPress\" target=\"_blank\" rel=\"noreferrer noopener\">BlogML Importer<\/a>: requiere <a href=\"https:\/\/github.com\/developdaly\/BlogML-Importer-for-WordPress\/tree\/4606673ff38aec309f1b608ea6b0c140c2e8a014\" target=\"_blank\" rel=\"noreferrer noopener\">modificaciones para funcionar<\/a> con las \u00faltima versiones de WordPress<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Siempre me hab\u00eda justado, estaba en .NET pero el tiempo ha dejado claro al vencedor&#8230; La migraci\u00f3n de datos entre sistemas puede ser siempre un punto delicado, y esta vez no ser\u00e1 una excepci\u00f3n. Despu\u00e9s de dar vueltas para hacerlo de la manera m\u00e1s r\u00e1pida y efectiva, ha tocado utilizar Blog Migrator. El primer paso [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[27,26,30,29,28],"class_list":["post-383","post","type-post","status-publish","format-standard","hentry","category-software","tag-blogengine","tag-blogengine-io","tag-migracion","tag-migration","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=383"}],"version-history":[{"count":0,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/383\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}