EmDash migra conteúdo do WordPress. Importe suas postagens, páginas, mídias e taxonomias através do painel de administração.
Antes de começar
Exporte seu conteúdo
No WordPress, vá para Ferramentas → Exportar e baixe um arquivo de exportação completo (.xml).
Faça backup do seu site
Mantenha seu site WordPress funcionando até verificar que a migração foi bem-sucedida.
Métodos de importação
EmDash suporta três métodos para importar conteúdo do WordPress:
| Método | Melhor para | Inclui rascunhos | Requer autenticação |
|---|---|---|---|
| Upload de arquivo WXR | Migrações completas | Sim | Não |
| WordPress.com | Sites hospedados no WordPress.com | Sim | OAuth |
| REST API (sonda) | Verificar conteúdo antes da exportação | Não | Opcional |
O upload de arquivo WXR é recomendado para a maioria das migrações. Ele captura todo o conteúdo, incluindo rascunhos, campos personalizados e postagens privadas.
Importação de arquivo WXR
-
Exportar do WordPress
No seu administrador do WordPress, vá para Ferramentas → Exportar → Todo o conteúdo → Baixar arquivo de exportação.
-
Abrir o assistente de importação
No EmDash, vá para Admin → Configurações → Importar → WordPress.
-
Enviar seu arquivo de exportação
Arraste e solte seu arquivo
.xmlou clique para navegar. O arquivo é analisado no seu navegador. -
Revisar conteúdo detectado
O assistente mostra o que foi encontrado:
Found in export: ├── Posts: 127 → posts [New collection] ├── Pages: 12 → pages [Add fields] └── Media: 89 attachments -
Configurar mapeamentos
Alterne quais tipos de postagem importar. EmDash automaticamente:
- Cria novas coleções para tipos de postagem não mapeados
- Adiciona campos ausentes às coleções existentes
- Avisa sobre conflitos de tipo de campo
-
Executar a importação
Clique em Importar conteúdo. O progresso é exibido conforme cada item é processado.
-
Importar mídia (opcional)
Após a importação de conteúdo, escolha se deseja baixar arquivos de mídia. EmDash:
- Baixa de seus URLs do WordPress
- Remove duplicatas por hash de conteúdo
- Reescreve URLs em seu conteúdo automaticamente
Conversão de conteúdo
Gutenberg para Portable Text
EmDash converte blocos Gutenberg em Portable Text, um formato de conteúdo estruturado.
| Bloco Gutenberg | Portable Text | Notas |
|---|---|---|
core/paragraph | block style=“normal” | Marcações inline preservadas |
core/heading | block style=“h1-h6” | Nível dos atributos do bloco |
core/image | image block | Referência de mídia atualizada |
core/list | block with listItem type | Ordenadas e não ordenadas |
core/quote | block style=“blockquote” | Citação incluída |
core/code | code block | Atributo de idioma preservado |
core/embed | embed block | URL e provedor armazenados |
core/gallery | gallery block | Array de referências de imagem |
core/columns | columns block | Conteúdo aninhado preservado |
| Blocos desconhecidos | htmlBlock | HTML bruto preservado para revisão |
Blocos desconhecidos são armazenados como htmlBlock com o HTML original e metadados do bloco. Você pode revisá-los e convertê-los manualmente ou criar componentes Portable Text personalizados para renderizá-los.
Conteúdo do editor clássico
HTML do editor clássico é convertido em blocos Portable Text. Estilos inline (<strong>, <em>, <a>) se tornam marcações em spans.
Mapeamento de status
| Status WordPress | Status EmDash |
|---|---|
publish | published |
draft | draft |
pending | pending |
private | private |
future | scheduled |
trash | archived |
Importação de taxonomia
Categorias e tags são importadas como taxonomias com hierarquia 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 e ACF
Meta de postagens do WordPress e campos ACF são analisados durante a importação:
-
Fase de análise
O assistente detecta campos personalizados e sugere 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) -
Mapeamento de campos
Campos internos do WordPress (começando com
_edit_,_wp_) são ocultados por padrão. Campos de plugins SEO são mapeados para um objetoseo. -
Inferência de tipo
EmDash infere tipos de campo a partir de valores:
- Strings numéricas →
number "1","0","true","false"→boolean- Datas ISO →
date - PHP/JSON serializado →
json - IDs do WordPress (ex:
_thumbnail_id) →reference
- Strings numéricas →
Redirecionamentos de URL
Após a importação, EmDash gera um mapa de redirecionamento:
{
"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" }
]
}
Aplique esses redirecionamentos a:
- Regras de redirecionamento Cloudflare
- Configuração de redirecionamento da sua plataforma de hospedagem
- Opção
redirectsdo Astro emastro.config.mjs
Referência de mapeamento de conceitos
Use esta tabela ao adaptar padrões do WordPress para EmDash:
| WordPress | EmDash | Notas |
|---|---|---|
register_post_type() | Coleção na UI admin | Criado via dashboard ou API |
register_taxonomy() | Taxonomia ou campo de array | Depende da complexidade |
register_meta() | Campo no esquema da coleção | Tipado, não chave-valor |
WP_Query | getCollection(filters) | Consultas em tempo de execução |
get_post() | getEntry(collection, id) | Retorna entrada ou null |
wp_insert_post() | POST /_emdash/api/content/{type} | REST API |
the_content | <PortableText value={...} /> | Renderização Portable Text |
add_shortcode() | Bloco personalizado Portable Text | Renderizador de componente personalizado |
register_block_type() | Bloco personalizado Portable Text | Igual aos shortcodes |
add_menu_page() | Página admin de plugin | Sob /_emdash/admin/ |
add_action/filter() | Hooks de plugin | hooks.content:beforeSave |
wp_options | ctx.kv | Armazenamento chave-valor |
wp_postmeta | Campos de coleção | Estruturado, não chave-valor |
$wpdb | ctx.storage | Acesso direto ao armazenamento |
| Categories/Tags | Taxonomias | Suporte hierárquico preservado |
Importação API (Avançado)
A importação do WordPress está disponível através do painel de administração e da REST API. Use o assistente de importação do painel de administração para a melhor experiência — ele fornece mapeamento de campos, resolução de conflitos e rastreamento de progresso.
Os endpoints da API de importação estão sob /_emdash/api/import/wordpress/ para acesso programático.
Solução de problemas
”Erro de análise XML”
O arquivo de exportação pode estar corrompido ou incompleto. Exporte novamente do WordPress.
Falhas no download de mídia
Algumas imagens podem estar atrás de autenticação ou terem sido movidas. A importação continua e as URLs com falha são registradas para tratamento manual.
Conflitos de tipo de campo
Se uma coleção existente tiver um campo com um tipo incompatível, o assistente de importação mostra o conflito. Ou:
- Renomeie o campo EmDash
- Altere o mapeamento de campo do WordPress
- Exclua e recrie a coleção
Exportações grandes
Para exportações acima de 100MB, considere:
- Exportar tipos de postagem separadamente no WordPress
- Importar cada arquivo sequencialmente
- Usar a CLI com
--resumepara confiabilidade
Próximos passos
- Importação de conteúdo — Outras fontes e métodos de importação
- Portabilidade de plugins — Migrar funcionalidade de plugins do WordPress
- Trabalhando com conteúdo — Consultar e renderizar seu conteúdo importado