Desarrollo web con EmDash CMS y migración desde WordPress
Hacemos desarrollo web con EmDash: sitios en EmDash, el CMS de código abierto (MIT) para Astro que corre en Cloudflare Workers, y pasamos sitios WordPress existentes a EmDash. El equipo editor tiene un panel con páginas, medios y campos de SEO; el visitante recibe un sitio Astro servido desde la red de Cloudflare. Ya migramos completo un sitio WordPress de más de 1.000 entradas, así que el proceso y los problemas de abajo salen de ese trabajo, no de la documentación. Cada proyecto se cotiza después de revisar el sitio.
Qué incluye el desarrollo web con EmDash
- Sitios nuevos en EmDash: modelo de contenido (colecciones, campos, autores, categorías), plantillas de página en Astro y un panel que tu equipo usa sin depender de un desarrollador.
- Migración de WordPress a EmDash: entradas, páginas, medios, autores y taxonomías, con cada URL conservada o redirigida.
- Búsqueda, sitemap y SEO: búsqueda de texto completo, un sitemap y un robots escritos para tu sitio y no los genéricos, y campos de SEO revisados.
- Publicación en Cloudflare: Workers, la base de datos D1 y el almacenamiento R2 para medios, con una página de error que Google no confunde con un 404.
Cómo migramos de WordPress a EmDash
- Inventario. Exportamos el sitio en WXR, contamos entradas, páginas, medios y taxonomías, y rastreamos las URL publicadas para no perder nada de lo que hoy posiciona.
- Comprobar qué contenido es el real. En sitios hechos con constructores de páginas, el cuerpo guardado puede no ser el que ve el visitante (lo explicamos abajo), así que comparamos el título de cada entrada con su cuerpo antes de importar.
- Modelo e importación. Colecciones y campos en EmDash, y después la importación. El importador de WordPress de EmDash descarga los medios desde las URL del archivo exportado y rechaza direcciones locales o privadas, así que con un sitio clonado en local subimos los medios por la API y reescribimos las URL después.
- Revisar el SEO. La importación llenó las descripciones de SEO con resúmenes cortados a 160 caracteres con puntos suspensivos. Las revisamos en vez de publicarlas tal cual.
- URL, sitemap y redirecciones. El sitemap que trae EmDash lista todas las colecciones, incluso las que no tienen página pública. Lo reemplazamos por uno que solo lista URL reales e indexables, y redirigimos lo que cambia de ruta.
- Publicar y verificar. Los datos entran en D1 antes de la primera visita (si no, el sistema crea una base vacía) y comprobamos el build de producción, no solo el servidor de desarrollo.
Tres problemas de migración que encontramos, y cómo los resolvimos
Contenido viejo de Elementor en post_content
En sitios con Elementor, el post_content de WordPress es una copia en caché que Elementor solo reescribe a veces; la página publicada se dibuja desde el campo _elementor_data. Las entradas creadas duplicando otra conservaban el texto del artículo viejo. En la migración de más de 1.000 entradas, más o menos una de cada ocho tenía el cuerpo de otro artículo, y el sitio publicado se veía bien, así que nadie lo sabía. Una importación directa habría publicado el artículo equivocado con el título correcto. La solución: reconstruir cada cuerpo desde _elementor_data y marcar toda entrada cuyo título no coincide con su cuerpo.
El límite de lectura del plan gratis de Cloudflare D1
D1 cobra por filas leídas, no por visitas. En el plan Workers Free el límite es de 5 millones de filas leídas por día y por cuenta, sumando todas las bases (precios de Cloudflare D1, consultado el 31 de octubre de 2026). Una página con mucho contenido que cuenta categorías o filtra un archivo grande puede leer miles de filas cada vez. En pruebas, nuestra vista previa llegó al límite y todas las páginas que usaban la base fallaron hasta el reinicio diario. Un sitio real necesita el plan Workers Paid, con un cargo mínimo de 5 dólares al mes por cuenta (precios de Cloudflare Workers, consultado el 31 de octubre de 2026), más caché para las consultas caras.
Un índice de búsqueda que quedó desactualizado
La búsqueda de EmDash funciona sobre SQLite FTS5 en D1, y el índice que armamos sobre el contenido migrado usaba el mismo motor: un índice de contenido externo sincronizado con triggers. Escribir filas con INSERT OR REPLACE borra la fila vieja sin disparar el trigger de borrado, así que el índice guarda entradas de filas que ya no existen. Algunas búsquedas fallan con un error de base “malformada” y otras funcionan, y parece aleatorio. Escribimos con upsert (ON CONFLICT … DO UPDATE) y cerramos cada carga masiva con el comando rebuild del índice.
Precio del desarrollo con EmDash
Los sitios y migraciones en EmDash se cotizan por proyecto. Lo que mueve la cotización: cuántas entradas y páginas hay, si se usó un constructor de páginas, tipos de contenido y campos personalizados, la cantidad de medios y las integraciones o la búsqueda que necesite el sitio. Mándanos la dirección del sitio y te respondemos con una cotización.
Los costos de funcionamiento son de Cloudflare y los pagas tú directamente. Para algo más que un sitio de prueba, cuenta con el plan Workers Paid (desde 5 dólares al mes, fuente arriba); el dominio lo cobra aparte tu registrador. Si quieres ver cuánto cuesta una web completa, lee cuánto cuesta una página web en Estados Unidos.
Cuándo EmDash no es la mejor opción
EmDash llegó a la versión 1.0 en abril de 2026, así que su ecosistema de plugins es joven. Si tu sitio depende de plugins de WordPress como WooCommerce, un sistema de membresías o una plataforma de cursos, o tu equipo ya sabe usar WordPress y está contento, quédate en WordPress: también hacemos temas de WordPress a medida. Si el sitio casi no cambia y nadie necesita un editor, un sitio Astro simple sale todavía más barato; nuestra guía Astro vs WordPress explica esa decisión, y nuestras plantillas Astro son un punto de partida.