EmDash für WordPress-Entwickler

Auf dieser Seite

EmDash behält vertraute Inhaltskonzepte wie Beiträge, Seiten, Taxonomien, Menüs, Medien und Revisionen bei. Astro liefert die Theme-Schicht: Routen, Layouts, Komponenten und Server-Rendering.

Was vertraut bleibt

Redakteure arbeiten weiterhin mit benannten Inhaltstypen, strukturierten Feldern, Entwurfs- und Veröffentlichungsstatus, hierarchischen Kategorien, flachen Tags, verschachtelten Menüs, Medien und Revisionshistorie. Diese Konzepte werden in EmDash-Sammlungen und Verwaltungsbildschirme überführt.

Der Entwicklungsworkflow ändert sich. Die PHP-Template-Auswahl wird zu expliziten Astro-Routen, Template Parts werden zu importierten Komponenten, und Code wird getrennt vom Datenbankinhalt deployt. Sie benötigen kein React, um die öffentliche Website zu erstellen; .astro-Komponenten kombinieren serverseitiges TypeScript mit HTML-ähnlichen Templates.

Konzeptzuordnung

WordPressEmDash und Astro
Post TypeEmDash-Sammlung
Post MetaSammlungsfeld
Kategorie oder TagEmDash-Taxonomie
WP_QuerygetEmDashCollection()
get_post()getEmDashEntry()
the_content()<PortableText />
Template-HierarchieDateien in src/pages/
Template PartImportierte .astro-Komponente
header.php und footer.phpAstro-Layout
wp_nav_menu()getMenu()
SidebarWidget-Bereich und <WidgetArea />
Options APISite-Einstellungen oder ctx.kv eines Plugins
WordPress-PluginSandboxed oder natives EmDash-Plugin

Inhaltsmodell

Erstellen und bearbeiten Sie Sammlungen unter Inhaltstypen in der EmDash-Verwaltung. Eine Sammlung hat explizit typisierte Felder und kann Entwürfe, Revisionen, Zeitplanung, Suche, SEO oder Kommentare aktivieren.

Abfragen geben Astro-Live-Collection-Einträge zurück. entry.id ist der Routen-Bezeichner und ist normalerweise der Slug; entry.data.id ist die Datenbank-Inhalts-ID.

Das folgende Archiv fragt Beiträge in Veröffentlichungsreihenfolge ab:

---
import { getEmDashCollection } from "emdash";

const { entries: posts, error } = await getEmDashCollection("posts", {
  orderBy: { published_at: "desc" },
  limit: 10,
});

if (error) return new Response("Beiträge konnten nicht geladen werden", { status: 500 });
---

{posts.map((post) => (
  <article>
    <h2><a href={`/posts/${post.id}`}>{post.data.title}</a></h2>
    {post.data.excerpt && <p>{post.data.excerpt}</p>}
  </article>
))}

Theme-Dateien

Astro-Routen ersetzen die WordPress-Template-Hierarchie. Ein Template wählt seine eigene URL-Struktur, anstatt sich auf magische Dateinamen zu verlassen.

WordPress-DateiAktuelle Blog-Template-Datei
front-page.php oder home.phpsrc/pages/index.astro
single.phpsrc/pages/posts/[slug].astro
archive.phpsrc/pages/posts/index.astro
page.phpsrc/pages/pages/[slug].astro
category.phpsrc/pages/category/[slug].astro
tag.phpsrc/pages/tag/[slug].astro
search.phpsrc/pages/search.astro
404.phpsrc/pages/404.astro
header.php und footer.phpsrc/layouts/Base.astro

Lesen Sie Astro für WordPress-Entwickler für die Projektstruktur, Komponentensyntax, Props, Slots, Layouts, Routing und den servergerenderten Abfrageablauf, die von EmDash-Templates verwendet werden.

Menüs und Widget-Bereiche

Menüs und Widget-Bereiche leben in der Datenbank und bleiben nach der Einrichtung bearbeitbar. Templates fragen sie zur Anforderungszeit ab:

---
import { getMenu } from "emdash";
import { WidgetArea } from "emdash/ui";

const primary = await getMenu("primary");
---

<nav>
  {primary?.items.map((item) => <a href={item.url}>{item.label}</a>)}
</nav>

<aside><WidgetArea name="sidebar" /></aside>

Site-Einstellungen und Taxonomien

Customizer-ähnliche Website-Identität lebt in den EmDash-Einstellungen. Rufen Sie die Einstellungen einmal ab und verwenden Sie die aufgelöste Logo-URL, wenn eine vorhanden ist:

---
import { getSiteSettings } from "emdash";

const settings = await getSiteSettings();
---

<a href="/">
  {settings.logo?.url
    ? <img src={settings.logo.url} alt={settings.logo.alt || settings.title} />
    : settings.title}
</a>

Taxonomie-Begriffe sind separate Datensätze und keine direkt in entry.data gespeicherten Werte. Lösen Sie einen Begriff auf und verwenden Sie dann seinen Slug in einem Sammlungsfilter:

import { getEmDashCollection, getTerm } from "emdash";

const news = await getTerm("category", "news", { includeCounts: false });
const { entries: posts } = news
  ? await getEmDashCollection("posts", { where: { category: news.slug } })
  : { entries: [] };

Plugin-Formate

EmDash hat zwei Plugin-Formate:

  • Ein Sandboxed Plugin verwendet emdash-plugin.jsonc für seine Identität und seinen Vertrauensvertrag, plus ein standardmäßig exportiertes src/plugin.ts-Objekt vom Typ SandboxedPlugin. Es kann in einer isolierten Runtime laufen und Block Kit für die Admin-UI verwenden.
  • Ein natives Plugin exportiert eine Build-Time-Deskriptor-Factory und eine Runtime-createPlugin()-Funktion, erstellt mit definePlugin(). Verwenden Sie dieses Format für React-Admin-Komponenten, öffentliche Astro-Komponenten oder Seitenfragmente.

Beginnen Sie mit Ein Plugin-Format wählen. Die Hook-Namen und PluginContext-APIs sind gemeinsam, aber die Paket- und Handler-Formen sind nicht austauschbar.

WordPress-Inhalte importieren

Öffnen Sie WordPress importieren in der Admin-Seitenleiste oder besuchen Sie direkt /_emdash/admin/import/wordpress. EmDash unterstützt zwei Importpfade:

  1. Laden Sie eine WordPress eXtended RSS (WXR)-Datei hoch, die über Werkzeuge → Exportieren exportiert wurde.
  2. Installieren Sie das EmDash Exporter Plugin auf der WordPress-Site und verbinden Sie es mit einem WordPress-Anwendungspasswort. Dieser Pfad kann Inhalte einschließen, die eine normale öffentliche REST-API nicht bereitstellt.

Die Eingabe einer WordPress-URL ohne den Exporter kann die Site erkennen und öffentliche Beiträge, Seiten und Medien zählen. Diese REST-Abfrage importiert keine Inhalte.

Der Importer ordnet WordPress publish dem EmDash-Status published zu. Entwurf, ausstehend, privat, geplant, Papierkorb und unbekannte Status werden zu Entwürfen. Überprüfen Sie importierte Berechtigungen und den Veröffentlichungsstatus, bevor Sie DNS ändern oder WordPress stilllegen.

Folgen Sie Von WordPress migrieren für das vollständige Verfahren und das Wiederholungsverhalten.

Redaktioneller Workflow

Die EmDash-Verwaltung bietet Sammlungslisten, einen Portable-Text-Editor, Medienverwaltung, Menübearbeitung, Taxonomieverwaltung, Revisionen und Vorschau-Links. Es ist keine visuelle Kopie von wp-admin: Gutenberg-Blöcke werden zu Portable Text, und die verfügbaren Bildschirme hängen von den für die Site konfigurierten Sammlungen und Funktionen ab.

Nächste Schritte