Zum Inhalt springen

Von WordPress zu EmDash migrieren

EmDash bietet einen durchgehenden Migrationspfad von WordPress. Beiträge, Seiten, Medien und Taxonomien lassen sich direkt über das Admin-Dashboard importieren, ganz ohne CLI.

Wenn Sie zuerst einen allgemeineren Überblick über die Migration wünschen, lesen Sie WordPress zu Astro mit EmDash und EmDash vs WordPress.

Exportieren Sie Ihre Inhalte

Gehen Sie in WordPress zu Werkzeuge → Exportieren und laden Sie eine vollständige Exportdatei (.xml) herunter.

Sichern Sie Ihre Website

Lassen Sie Ihre WordPress-Website laufen, bis Sie die erfolgreiche Migration bestätigt haben.

EmDash unterstützt drei Methoden zum Importieren von WordPress-Inhalten:

MethodeAm besten geeignet fürEntwürfe enthaltenAuthentifizierung erforderlich
WXR-Datei-UploadKomplette MigrationenJaNein
WordPress.comAuf WordPress.com gehostete WebsitesJaOAuth
REST-API (Probe)Inhaltsprüfung vor dem ExportNeinOptional

Der WXR-Datei-Upload ist für die meisten Migrationen die beste Wahl. Er erfasst alle Inhalte, einschließlich Entwürfen, benutzerdefinierten Feldern und privaten Beiträgen.

  1. Exportieren aus WordPress

    Gehen Sie in Ihrem WordPress-Admin zu Werkzeuge → Exportieren → Alle Inhalte → Exportdatei herunterladen.

  2. Import-Assistent öffnen

    Gehen Sie in EmDash zu Admin → Einstellungen → Importieren → WordPress.

  3. Ihre Exportdatei hochladen

    Ziehen Sie Ihre .xml-Datei per Drag & Drop oder klicken Sie zum Durchsuchen. Die Datei wird in Ihrem Browser geparst.

  4. Erkannte Inhalte überprüfen

    Der Assistent zeigt an, was gefunden wurde:

    Im Export gefunden:
    ├── Beiträge: 127 → posts [Neue Sammlung]
    ├── Seiten: 12 → pages [Felder hinzufügen]
    └── Medien: 89 Anhänge
  5. Zuordnungen konfigurieren

    Schalten Sie um, welche Beitragstypen importiert werden sollen. EmDash erstellt automatisch:

    • Neue Sammlungen für nicht zugeordnete Beitragstypen
    • Fehlende Felder zu bestehenden Sammlungen hinzu
    • Warnt vor Feldtypkonflikten
  6. Import ausführen

    Klicken Sie auf Inhalte importieren. Der Fortschritt wird während der Verarbeitung jedes Elements angezeigt.

  7. Medien importieren (optional)

    Nach dem Inhaltsimport können Sie wählen, ob Mediendateien heruntergeladen werden sollen. EmDash:

    • Lädt von Ihren WordPress-URLs herunter
    • Dedupliziert anhand des Inhalts-Hashs
    • Schreibt URLs in Ihren Inhalten automatisch um

EmDash konvertiert Gutenberg-Blöcke in Portable Text, ein strukturiertes Inhaltsformat.

Gutenberg-BlockPortable TextHinweise
core/paragraphblock style=“normal”Inline-Markierungen erhalten
core/headingblock style=“h1-h6”Ebene aus Blockattributen
core/imageimage blockMedienreferenz aktualisiert
core/listblock with listItem typeGeordnet und ungeordnet
core/quoteblock style=“blockquote”Zitat enthalten
core/codecode blockSprachattribut erhalten
core/embedembed blockURL und Anbieter gespeichert
core/gallerygallery blockArray von Bildreferenzen
core/columnscolumns blockVerschachtelter Inhalt erhalten
Unbekannte BlöckehtmlBlockRohes HTML zur Überprüfung erhalten

Unbekannte Blöcke werden als htmlBlock mit dem ursprünglichen HTML und Block-Metadaten gespeichert. Sie können diese manuell überprüfen und konvertieren oder benutzerdefinierte Portable Text-Komponenten zu deren Darstellung erstellen.

HTML aus dem Classic Editor wird in Portable Text-Blöcke konvertiert. Inline-Stile (<strong>, <em>, <a>) werden zu Markierungen auf Spans.

WordPress-StatusEmDash-Status
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

Kategorien und Schlagwörter werden als Taxonomien importiert, wobei die Hierarchie erhalten bleibt:

WordPress: EmDash:
├── Kategorien (hierarchisch) ├── Tabelle `taxonomies`
│ ├── Nachrichten │ ├── category/news
│ │ ├── Lokal │ ├── category/local (parent: news)
│ │ └── Welt │ ├── category/world (parent: news)
│ └── Sport │ └── category/sports
└── Schlagwörter (flach) └── Join-Tabelle `content_taxonomies`
├── hervorgehoben ├── tag/featured
└── eilmeldung └── tag/breaking

WordPress-Post-Meta- und ACF-Felder werden während des Imports analysiert:

  1. Analysephase

    Der Assistent erkennt benutzerdefinierte Felder und schlägt EmDash-Feldtypen vor:

    Benutzerdefinierte Felder:
    ├── subtitle (string, 45 Beiträge)
    ├── _yoast_wpseo_title → seo.title (string, 127 Beiträge)
    ├── _thumbnail_id → featuredImage (reference, 89 Beiträge)
    └── price (number, 23 Beiträge)
  2. Feldzuordnung

    Interne WordPress-Felder (beginnend mit _edit_, _wp_) sind standardmäßig ausgeblendet. Felder von SEO-Plugins werden einem seo-Objekt zugeordnet.

  3. Typinferenz

    EmDash leitet Feldtypen aus Werten ab:

    • Numerische Zeichenketten → number
    • "1", "0", "true", "false" → boolean
    • ISO-Daten → date
    • Serialisiertes PHP/JSON → json
    • WordPress-IDs (z.B. _thumbnail_id) → reference

Nach dem Import erstellt EmDash eine Weiterleitungskarte:

{
"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" }
]
}

Wenden Sie diese Weiterleitungen an auf:

  • Cloudflare-Weiterleitungsregeln
  • Die Weiterleitungskonfiguration Ihrer Hosting-Plattform
  • Astros redirects-Option in astro.config.mjs

Verwenden Sie diese Tabelle, wenn Sie WordPress-Muster an EmDash anpassen:

WordPressEmDashAnmerkungen
register_post_type()Sammlung in der Admin-OberflächeWird über Dashboard oder API erstellt
register_taxonomy()Taxonomie oder Array-FeldHängt von der Komplexität des Inhaltsmodells ab
register_meta()Feld im SammlungsschemaTypisiert, nicht Schlüssel-Wert
WP_QuerygetCollection(filters)Laufzeitabfragen
get_post()getEntry(collection, id)Gibt Eintrag oder null zurück
wp_insert_post()POST /_emdash/api/content/{type}REST API
the_content<PortableText value={...} />Portable-Text-Rendering
add_shortcode()Benutzerdefinierter Portable-Text-BlockWird über einen eigenen Komponenten-Renderer ausgegeben
register_block_type()Benutzerdefinierter Portable-Text-BlockGleicher Ansatz wie bei Shortcodes
add_menu_page()Plugin-Admin-SeiteUnter /_emdash/admin/
add_action/filter()Plugin-Hookshooks.content:beforeSave
wp_optionsctx.kvSchlüssel-Wert-Speicher
wp_postmetaSammlungsfelderStrukturiert, nicht Schlüssel-Wert
$wpdbctx.storageDirekter Speicherzugriff
Kategorien/TagsTaxonomienHierarchische Unterstützung bleibt erhalten

Der WordPress-Import ist über das Admin-Dashboard und die REST-API verfügbar. Verwenden Sie den Import-Assistenten im Admin-Dashboard für die beste Erfahrung – er bietet Feldzuordnung, Konfliktlösung und Fortschrittsverfolgung.

Die API-Endpunkte für den Import befinden sich unter /_emdash/api/import/wordpress/ für programmatischen Zugriff.

Die Exportdatei ist möglicherweise beschädigt oder unvollständig. Exportieren Sie erneut aus WordPress.

Einige Bilder könnten hinter einer Authentifizierung stehen oder verschoben worden sein. Der Import wird fortgesetzt, und fehlgeschlagene URLs werden für die manuelle Bearbeitung protokolliert.

Wenn eine bestehende Sammlung ein Feld mit einem inkompatiblen Typ hat, zeigt der Import-Assistent den Konflikt an. Entweder:

  • Benennen Sie das EmDash-Feld um
  • Ändern Sie die WordPress-Feldzuordnung
  • Löschen und erstellen Sie die Sammlung neu

Für Exporte über 100MB sollten Sie Folgendes in Betracht ziehen:

  1. Exportieren Sie Beitragstypen in WordPress separat
  2. Importieren Sie jede Datei nacheinander
  3. Verwenden Sie die CLI mit --resume für Zuverlässigkeit