Migrar desde WordPress

En esta página

EmDash migra contenido desde WordPress. Importa tus publicaciones, páginas, medios y taxonomías a través del panel de administración.

Antes de comenzar

Exporta tu contenido

En WordPress, ve a Herramientas → Exportar y descarga un archivo de exportación completo (.xml).

Respalda tu sitio

Mantén tu sitio de WordPress en funcionamiento hasta que verifiques que la migración fue exitosa.

Métodos de importación

EmDash admite tres métodos para importar contenido de WordPress:

MétodoMejor paraIncluye borradoresRequiere autenticación
Carga de archivo WXRMigraciones completasNo
WordPress.comSitios alojados en WordPress.comOAuth
REST API (sondeo)Verificar contenido antes de exportarNoOpcional

La carga de archivo WXR es recomendada para la mayoría de las migraciones. Captura todo el contenido, incluidos borradores, campos personalizados y publicaciones privadas.

Importación de archivo WXR

  1. Exportar desde WordPress

    En tu administrador de WordPress, ve a Herramientas → Exportar → Todo el contenido → Descargar archivo de exportación.

  2. Abrir el asistente de importación

    En EmDash, ve a Admin → Configuración → Importar → WordPress.

  3. Subir tu archivo de exportación

    Arrastra y suelta tu archivo .xml o haz clic para explorar. El archivo se analiza en tu navegador.

  4. Revisar contenido detectado

    El asistente muestra lo que se encontró:

    Found in export:
    ├── Posts: 127 → posts [New collection]
    ├── Pages: 12  → pages [Add fields]
    └── Media: 89 attachments
  5. Configurar mapeos

    Activa qué tipos de publicaciones importar. EmDash automáticamente:

    • Crea nuevas colecciones para tipos de publicaciones no mapeados
    • Agrega campos faltantes a colecciones existentes
    • Advierte sobre conflictos de tipos de campo
  6. Ejecutar la importación

    Haz clic en Importar contenido. El progreso se muestra mientras se procesa cada elemento.

  7. Importar medios (opcional)

    Después de importar el contenido, elige si deseas descargar archivos multimedia. EmDash:

    • Descarga desde tus URLs de WordPress
    • Deduplica por hash de contenido
    • Reescribe URLs en tu contenido automáticamente

Conversión de contenido

Gutenberg a Portable Text

EmDash convierte bloques de Gutenberg a Portable Text, un formato de contenido estructurado.

Bloque GutenbergPortable TextNotas
core/paragraphblock style=“normal”Marcas en línea preservadas
core/headingblock style=“h1-h6”Nivel de atributos de bloque
core/imageimage blockReferencia de medios actualizada
core/listblock with listItem typeOrdenadas y desordenadas
core/quoteblock style=“blockquote”Cita incluida
core/codecode blockAtributo de idioma preservado
core/embedembed blockURL y proveedor almacenados
core/gallerygallery blockArray de referencias de imagen
core/columnscolumns blockContenido anidado preservado
Bloques desconocidoshtmlBlockHTML sin procesar preservado para revisión

Los bloques desconocidos se almacenan como htmlBlock con el HTML original y metadatos del bloque. Puedes revisarlos y convertirlos manualmente o crear componentes Portable Text personalizados para renderizarlos.

Contenido del editor clásico

El HTML del editor clásico se convierte a bloques Portable Text. Los estilos en línea (<strong>, <em>, <a>) se convierten en marcas en spans.

Mapeo de estados

Estado WordPressEstado EmDash
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

Importación de taxonomías

Las categorías y etiquetas se importan como taxonomías con jerarquía preservada:

WordPress:                    EmDash:
├── Categories (hierarchical) ├── taxonomies table
│   ├── News                  │   ├── category/news
│   │   ├── Local             │   ├── category/local (parent: news)
│   │   └── World             │   ├── category/world (parent: news)
│   └── Sports                │   └── category/sports
└── Tags (flat)               └── content_taxonomies junction
    ├── featured                  ├── tag/featured
    └── breaking                  └── tag/breaking

Campos personalizados y ACF

Los meta de publicaciones de WordPress y campos ACF se analizan durante la importación:

  1. Fase de análisis

    El asistente detecta campos personalizados y sugiere tipos de campo EmDash:

    Custom Fields:
    ├── subtitle (string, 45 posts)
    ├── _yoast_wpseo_title → seo.title (string, 127 posts)
    ├── _thumbnail_id → featuredImage (reference, 89 posts)
    └── price (number, 23 posts)
  2. Mapeo de campos

    Los campos internos de WordPress (que comienzan con _edit_, _wp_) están ocultos por defecto. Los campos de plugins SEO se mapean a un objeto seo.

  3. Inferencia de tipos

    EmDash infiere tipos de campo desde valores:

    • Cadenas numéricas → number
    • "1", "0", "true", "false"boolean
    • Fechas ISO → date
    • PHP/JSON serializado → json
    • IDs de WordPress (ej. _thumbnail_id) → reference

Redirecciones de URL

Después de la importación, EmDash genera un mapa de redirecciones:

{
	"redirects": [
		{ "from": "/?p=123", "to": "/posts/hello-world" },
		{ "from": "/2024/01/hello-world/", "to": "/posts/hello-world" },
		{ "from": "/category/news/", "to": "/categories/news" }
	],
	"feeds": [
		{ "from": "/feed/", "to": "/rss.xml" },
		{ "from": "/feed/atom/", "to": "/atom.xml" }
	]
}

Aplica estas redirecciones a:

  • Reglas de redirección de Cloudflare
  • La configuración de redirección de tu plataforma de alojamiento
  • La opción redirects de Astro en astro.config.mjs

Referencia de mapeo de conceptos

Usa esta tabla al adaptar patrones de WordPress a EmDash:

WordPressEmDashNotas
register_post_type()Colección en UI de administraciónCreado vía dashboard o API
register_taxonomy()Taxonomía o campo de arrayDepende de la complejidad
register_meta()Campo en esquema de colecciónTipado, no clave-valor
WP_QuerygetCollection(filters)Consultas en tiempo de ejecución
get_post()getEntry(collection, id)Devuelve entrada o null
wp_insert_post()POST /_emdash/api/content/{type}REST API
the_content<PortableText value={...} />Renderizado de Portable Text
add_shortcode()Bloque personalizado Portable TextRenderizador de componente personalizado
register_block_type()Bloque personalizado Portable TextIgual que shortcodes
add_menu_page()Página de administración de pluginBajo /_emdash/admin/
add_action/filter()Hooks de pluginhooks.content:beforeSave
wp_optionsctx.kvAlmacén clave-valor
wp_postmetaCampos de colecciónEstructurado, no clave-valor
$wpdbctx.storageAcceso directo al almacenamiento
Categories/TagsTaxonomíasSoporte jerárquico preservado

Importación API (Avanzado)

La importación de WordPress está disponible a través del panel de administración y la REST API. Usa el asistente de importación del panel de administración para la mejor experiencia: proporciona mapeo de campos, resolución de conflictos y seguimiento de progreso.

Los endpoints de la API de importación están bajo /_emdash/api/import/wordpress/ para acceso programático.

Solución de problemas

”Error de análisis XML”

El archivo de exportación puede estar corrupto o incompleto. Vuelve a exportar desde WordPress.

Fallos de descarga de medios

Algunas imágenes pueden estar detrás de autenticación o haberse movido. La importación continúa y las URLs fallidas se registran para manejo manual.

Conflictos de tipos de campo

Si una colección existente tiene un campo con un tipo incompatible, el asistente de importación muestra el conflicto. O bien:

  • Renombra el campo EmDash
  • Cambia el mapeo de campo de WordPress
  • Elimina y recrea la colección

Exportaciones grandes

Para exportaciones de más de 100MB, considera:

  1. Exportar tipos de publicaciones por separado en WordPress
  2. Importar cada archivo secuencialmente
  3. Usar la CLI con --resume para confiabilidad

Próximos pasos