Migrar do WordPress

Nesta página

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étodoMelhor paraInclui rascunhosRequer autenticação
Upload de arquivo WXRMigrações completasSimNão
WordPress.comSites hospedados no WordPress.comSimOAuth
REST API (sonda)Verificar conteúdo antes da exportaçãoNãoOpcional

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

  1. Exportar do WordPress

    No seu administrador do WordPress, vá para Ferramentas → Exportar → Todo o conteúdo → Baixar arquivo de exportação.

  2. Abrir o assistente de importação

    No EmDash, vá para Admin → Configurações → Importar → WordPress.

  3. Enviar seu arquivo de exportação

    Arraste e solte seu arquivo .xml ou clique para navegar. O arquivo é analisado no seu navegador.

  4. 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
  5. 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
  6. Executar a importação

    Clique em Importar conteúdo. O progresso é exibido conforme cada item é processado.

  7. 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 GutenbergPortable TextNotas
core/paragraphblock style=“normal”Marcações inline preservadas
core/headingblock style=“h1-h6”Nível dos atributos do bloco
core/imageimage blockReferência de mídia atualizada
core/listblock with listItem typeOrdenadas e não ordenadas
core/quoteblock style=“blockquote”Citação incluída
core/codecode blockAtributo de idioma preservado
core/embedembed blockURL e provedor armazenados
core/gallerygallery blockArray de referências de imagem
core/columnscolumns blockConteúdo aninhado preservado
Blocos desconhecidoshtmlBlockHTML 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 WordPressStatus EmDash
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

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:

  1. 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)
  2. 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 objeto seo.

  3. 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

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 redirects do Astro em astro.config.mjs

Referência de mapeamento de conceitos

Use esta tabela ao adaptar padrões do WordPress para EmDash:

WordPressEmDashNotas
register_post_type()Coleção na UI adminCriado via dashboard ou API
register_taxonomy()Taxonomia ou campo de arrayDepende da complexidade
register_meta()Campo no esquema da coleçãoTipado, não chave-valor
WP_QuerygetCollection(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 TextRenderizador de componente personalizado
register_block_type()Bloco personalizado Portable TextIgual aos shortcodes
add_menu_page()Página admin de pluginSob /_emdash/admin/
add_action/filter()Hooks de pluginhooks.content:beforeSave
wp_optionsctx.kvArmazenamento chave-valor
wp_postmetaCampos de coleçãoEstruturado, não chave-valor
$wpdbctx.storageAcesso direto ao armazenamento
Categories/TagsTaxonomiasSuporte 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:

  1. Exportar tipos de postagem separadamente no WordPress
  2. Importar cada arquivo sequencialmente
  3. Usar a CLI com --resume para confiabilidade

Próximos passos