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étodo | Mejor para | Incluye borradores | Requiere autenticación |
|---|---|---|---|
| Carga de archivo WXR | Migraciones completas | Sí | No |
| WordPress.com | Sitios alojados en WordPress.com | Sí | OAuth |
| REST API (sondeo) | Verificar contenido antes de exportar | No | Opcional |
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
-
Exportar desde WordPress
En tu administrador de WordPress, ve a Herramientas → Exportar → Todo el contenido → Descargar archivo de exportación.
-
Abrir el asistente de importación
En EmDash, ve a Admin → Configuración → Importar → WordPress.
-
Subir tu archivo de exportación
Arrastra y suelta tu archivo
.xmlo haz clic para explorar. El archivo se analiza en tu navegador. -
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 -
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
-
Ejecutar la importación
Haz clic en Importar contenido. El progreso se muestra mientras se procesa cada elemento.
-
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 Gutenberg | Portable Text | Notas |
|---|---|---|
core/paragraph | block style=“normal” | Marcas en línea preservadas |
core/heading | block style=“h1-h6” | Nivel de atributos de bloque |
core/image | image block | Referencia de medios actualizada |
core/list | block with listItem type | Ordenadas y desordenadas |
core/quote | block style=“blockquote” | Cita incluida |
core/code | code block | Atributo de idioma preservado |
core/embed | embed block | URL y proveedor almacenados |
core/gallery | gallery block | Array de referencias de imagen |
core/columns | columns block | Contenido anidado preservado |
| Bloques desconocidos | htmlBlock | HTML 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 WordPress | Estado EmDash |
|---|---|
publish | published |
draft | draft |
pending | pending |
private | private |
future | scheduled |
trash | archived |
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:
-
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) -
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 objetoseo. -
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
- Cadenas numéricas →
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
redirectsde Astro enastro.config.mjs
Referencia de mapeo de conceptos
Usa esta tabla al adaptar patrones de WordPress a EmDash:
| WordPress | EmDash | Notas |
|---|---|---|
register_post_type() | Colección en UI de administración | Creado vía dashboard o API |
register_taxonomy() | Taxonomía o campo de array | Depende de la complejidad |
register_meta() | Campo en esquema de colección | Tipado, no clave-valor |
WP_Query | getCollection(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 Text | Renderizador de componente personalizado |
register_block_type() | Bloque personalizado Portable Text | Igual que shortcodes |
add_menu_page() | Página de administración de plugin | Bajo /_emdash/admin/ |
add_action/filter() | Hooks de plugin | hooks.content:beforeSave |
wp_options | ctx.kv | Almacén clave-valor |
wp_postmeta | Campos de colección | Estructurado, no clave-valor |
$wpdb | ctx.storage | Acceso directo al almacenamiento |
| Categories/Tags | Taxonomías | Soporte 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:
- Exportar tipos de publicaciones por separado en WordPress
- Importar cada archivo secuencialmente
- Usar la CLI con
--resumepara confiabilidad
Próximos pasos
- Importación de contenido — Otras fuentes y métodos de importación
- Portación de plugins — Migrar funcionalidad de plugins de WordPress
- Trabajar con contenido — Consultar y renderizar tu contenido importado