Pular para o conteúdo

EmDash para Desenvolvedores WordPress

O EmDash traz conceitos familiares do WordPress—posts, páginas, taxonomias, menus, widgets e uma biblioteca de mídia—para uma stack moderna do Astro. Seu conhecimento de gerenciamento de conteúdo é transferido diretamente.

Se você está comparando plataformas antes de migrar, leia EmDash vs WordPress e WordPress para Astro com EmDash.

Os conceitos que você conhece do WordPress são recursos de primeira classe no EmDash:

  • Coleções funcionam como Tipos de Post Personalizados—defina a estrutura do seu conteúdo, consulte-a em templates
  • Taxonomias funcionam da mesma forma—hierárquicas (como categorias) e planas (como tags)
  • Menus com ordenação por arrastar e soltar e itens aninhados
  • Áreas de Widget para barras laterais e regiões de conteúdo dinâmico
  • Biblioteca de mídia com upload, organização e gerenciamento de imagens
  • Interface de administração que editores de conteúdo podem usar sem tocar em código

A implementação muda, mas o modelo mental permanece o mesmo:

TypeScript em vez de PHP

Templates são componentes Astro. A sintaxe é mais limpa, mas o conceito é o mesmo: código do servidor que gera HTML.

APIs de conteúdo em vez de WP_Query

Funções de consulta como getEmDashCollection() substituem WP_Query. Sem SQL, apenas chamadas de função.

Roteamento baseado em arquivos

Arquivos em src/pages/ se tornam URLs. Sem regras de reescrita ou hierarquia de templates para memorizar.

Componentes em vez de partes de template

Importe e use componentes. Mesma ideia que get_template_part(), melhor organização.

WordPressEmDashNotas
Tipos de Post PersonalizadosColeçõesDefina via UI de administração ou API
WP_QuerygetEmDashCollection()Filtros, limites, consultas de taxonomia
get_post()getEmDashEntry()Retorna entrada ou nulo
Categorias/TagsTaxonomiasSuporte hierárquico preservado
register_nav_menus()getMenu()Suporte de menu de primeira classe
register_sidebar()getWidgetArea()Áreas de widget de primeira classe
bloginfo('name')getSiteSetting("title")API de configurações do site
the_content()<PortableText />Renderização de conteúdo estruturado
ShortcodesBlocos de Texto PortátilComponentes personalizados
add_action/filter()Ganchos de plugincontent:beforeSave, etc.
wp_optionsctx.kvArmazenamento chave-valor
Diretório do temaDiretório src/Componentes, layouts, páginas
functions.phpastro.config.mjs + configuração do EmDashConfiguração de build e runtime

Consultas no WordPress usam WP_Query ou funções auxiliares. O EmDash usa funções de consulta tipadas.

archive.php
<?php
$posts = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 10,
'post_status' => 'publish',
'category_name' => 'news',
]);
while ($posts->have_posts()) :
$posts->the_post();
?>
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
<?php endwhile; ?>
php title="single.php"
<?php
$post = get_post($id);
?>
<article>
<h1><?php echo $post->post_title; ?></h1>
<?php echo apply_filters('the_content', $post->post_content); ?>
</article>

O WordPress usa uma hierarquia de templates para selecionar qual arquivo renderiza uma página. O Astro usa roteamento explícito baseado em arquivos.

Template WordPressEquivalente no EmDash
index.phpsrc/pages/index.astro
single.phpsrc/pages/posts/[slug].astro
single-{type}.phpsrc/pages/{type}/[slug].astro
page.phpsrc/pages/pages/[slug].astro
archive.phpsrc/pages/posts/index.astro
archive-{type}.phpsrc/pages/{type}/index.astro
category.phpsrc/pages/categories/[slug].astro
tag.phpsrc/pages/tags/[slug].astro
search.phpsrc/pages/search.astro
404.phpsrc/pages/404.astro
header.php / footer.phpsrc/layouts/Base.astro
sidebar.phpsrc/components/Sidebar.astro

Partes de template do WordPress se tornam componentes Astro:

php title="functions.php / template"
// No template:
get_template_part('template-parts/content', 'post');
// template-parts/content-post.php:
<article class="post">
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
</article>

O EmDash possui suporte de primeira classe para menus com resolução automática de URLs:

php title="header.php"
<?php
wp_nav_menu([
'theme_location' => 'primary',
'container' => 'nav',
]);
?>

Os menus são criados através da interface administrativa, arquivos de seed ou importação do WordPress.

As áreas de widgets funcionam como sidebars no WordPress:

php title="sidebar.php"
<?php if (is_active_sidebar('sidebar-1')) : ?>
<aside>
<?php dynamic_sidebar('sidebar-1'); ?>
</aside>
<?php endif; ?>

As opções do site e configurações do personalizador mapeiam para getSiteSetting():

WordPressEmDash
bloginfo('name')getSiteSetting("title")
bloginfo('description')getSiteSetting("tagline")
get_custom_logo()getSiteSetting("logo")
get_option('date_format')getSiteSetting("dateFormat")
home_url()Astro.site
import { getSiteSetting } from "emdash";
const title = await getSiteSetting("title");
const logo = await getSiteSetting("logo"); // Retorna { mediaId, alt, url }

As taxonomias funcionam conceitualmente da mesma forma — hierárquicas (como categorias) ou planas (como tags):

import { getTaxonomyTerms, getEntryTerms, getTerm } from "emdash";
// Obter todas as categorias
const categories = await getTaxonomyTerms("categories");
// Obter um termo específico
const news = await getTerm("categories", "news");
// Obter termos para um post
const postCategories = await getEntryTerms("posts", postId, "categories");

Os hooks do WordPress (add_action, add_filter) tornam-se hooks de plugins do EmDash:

WordPress HookEmDash HookPropósito
save_postcontent:beforeSaveModificar conteúdo antes de salvar
the_contentPortableText componentsTransformar conteúdo renderizado
pre_get_postsQuery optionsFiltrar consultas
wp_headLayout <head>Adicionar conteúdo ao head
wp_footerLayout before </body>Adicionar conteúdo ao rodapé

Type Safety

TypeScript em toda parte. Coleções, consultas e componentes são totalmente tipados. Chega de adivinhar nomes de campos ou tipos de retorno.

Performance

Sem sobrecarga de PHP. Geração estática por padrão. Renderização no servidor quando necessário. Pronto para implantação na edge.

Modern DX

Substituição de módulos a quente. Arquitetura baseada em componentes. Ferramentas modernas (Vite, TypeScript, ESLint).

Git-based Deployments

Código e templates no git. Conteúdo no banco de dados. Sem FTP, sem permissões de arquivo, sem sites hackeados.

O EmDash gera URLs de pré-visualização seguras com tokens assinados por HMAC. Editores de conteúdo podem pré-visualizar rascunhos sem fazer login na produção — compartilhe um link, não credenciais.

Os conflitos de plugins do WordPress desaparecem. Os plugins do EmDash são executados em contextos isolados com APIs explícitas. Sem poluição de estado global.

Os editores de conteúdo usam o painel administrativo do EmDash, semelhante ao wp-admin:

  • Dashboard com atividade recente
  • Listagens de coleções com busca, filtro e ações em massa
  • Editor rico para conteúdo (Portable Text, não Gutenberg)
  • Biblioteca de mídia com upload por arrastar e soltar
  • Construtor de menus com ordenação por arrastar e soltar
  • Editor de áreas de widgets para conteúdo de sidebar

A experiência de edição é familiar. A tecnologia por trás é moderna.

O EmDash importa conteúdo do WordPress diretamente:

  1. Exporte do WordPress (Ferramentas → Exportar)
  2. Faça upload do arquivo .xml no admin do EmDash
  3. Mapeie tipos de post para coleções
  4. Importe conteúdo e mídia

Posts, páginas, taxonomias, menus e mídia são transferidos. Blocos do Gutenberg são convertidos para Portable Text. Campos personalizados são analisados e mapeados.

Consulte o Guia de Migração do WordPress para instruções completas.