Migration von WordPress

Auf dieser Seite

EmDash bietet einen vollständigen Migrationspfad von WordPress. Importieren Sie Beiträge, Seiten, Medien und Taxonomien über das Admin-Dashboard – ohne CLI.

Bevor Sie starten

Inhalte exportieren

In WordPress unter Werkzeuge → Export eine vollständige Exportdatei (.xml) herunterladen.

Website sichern

WordPress weiter betreiben, bis die Migration erfolgreich verifiziert ist.

Importmethoden

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

MethodeAm besten fürEnthält EntwürfeAuth nötig
WXR-Datei-UploadVollständige MigrationenJaNein
WordPress.comAuf WordPress.com gehostete SitesJaOAuth
REST-API (Probe)Inhalte vor dem Export prüfenNeinOptional

Der WXR-Datei-Upload wird für die meisten Migrationen empfohlen. Er erfasst alle Inhalte einschließlich Entwürfe, benutzerdefinierter Felder und privater Beiträge.

WXR-Dateiimport

  1. Aus WordPress exportieren

    Im WordPress-Admin Werkzeuge → Export → Alle Inhalte → Exportdatei herunterladen.

  2. Import-Assistenten öffnen

    In EmDash Admin → Einstellungen → Import → WordPress.

  3. Exportdatei hochladen

    .xml-Datei per Drag-and-drop ablegen oder zum Durchsuchen klicken. Die Datei wird im Browser geparst.

  4. Erkannte Inhalte prüfen

    Der Assistent zeigt, was gefunden wurde:

    Found in export:
    ├── Posts: 127 → posts [New collection]
    ├── Pages: 12  → pages [Add fields]
    └── Media: 89 attachments
  5. Zuordnungen konfigurieren

    Festlegen, welche Post Types importiert werden. EmDash:

    • legt neue Collections für nicht zugeordnete Post Types an
    • ergänzt fehlende Felder in bestehenden Collections
    • warnt bei Feldtyp-Konflikten
  6. Import ausführen

    Inhalt importieren klicken. Der Fortschritt wird pro Eintrag angezeigt.

  7. Medien importieren (optional)

    Nach dem Inhaltsimport Medien-Dateien optional herunterladen. EmDash:

    • lädt von Ihren WordPress-URLs
    • dedupliziert per Content-Hash
    • schreibt URLs im Inhalt automatisch um

Inhaltskonvertierung

Gutenberg zu Portable Text

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

Gutenberg-BlockPortable TextHinweise
core/paragraphblock style=“normal”Inline-Markierungen erhalten
core/headingblock style=“h1-h6”Level aus Block-Attributen
core/imageimage blockMedienreferenz aktualisiert
core/listblock mit listItem typeNummeriert und unnummeriert
core/quoteblock style=“blockquote”Zitatangabe enthalten
core/codecode blockSprach-Attribut erhalten
core/embedembed blockURL und Anbieter gespeichert
core/gallerygallery blockArray von Bildreferenzen
core/columnscolumns blockVerschachtelter Inhalt erhalten
Unbekannte BlöckehtmlBlockRohes HTML zur Prüfung erhalten

Unbekannte Blöcke werden als htmlBlock mit Original-HTML und Block-Metadaten gespeichert. Sie können sie manuell prüfen und konvertieren oder eigene Portable-Text-Komponenten zum Rendern erstellen.

Classic-Editor-Inhalte

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

Status-Zuordnung

WordPress-StatusEmDash-Status
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

Taxonomie-Import

Kategorien und Schlagwörter werden als Taxonomien mit erhaltener Hierarchie importiert:

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

Benutzerdefinierte Felder und ACF

WordPress-Post-Meta und ACF-Felder werden beim Import analysiert:

  1. Analysephase

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

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

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

  3. Typinferenz

    EmDash leitet Feldtypen aus Werten ab:

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

URL-Weiterleitungen

Nach dem Import erzeugt EmDash eine Redirect-Map:

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

Diese Weiterleitungen anwenden auf:

  • Cloudflare Redirect Rules
  • Redirect-Konfiguration Ihrer Hosting-Plattform
  • Astros Option redirects in astro.config.mjs

Konzept-Mapping (Referenz)

Diese Tabelle hilft beim Übertragen von WordPress-Mustern auf EmDash:

WordPressEmDashHinweise
register_post_type()Collection im Admin-UIÜber Dashboard oder API
register_taxonomy()Taxonomie oder Array-FeldJe nach Komplexität
register_meta()Feld im Collection-SchemaTypisiert, kein Key-Value
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()Portable-Text-Custom-BlockEigene Renderer-Komponente
register_block_type()Portable-Text-Custom-BlockWie Shortcodes
add_menu_page()Plugin-Admin-SeiteUnter /_emdash/admin/
add_action/filter()Plugin-Hookshooks.content:beforeSave
wp_optionsctx.kvKey-Value-Store
wp_postmetaCollection-FelderStrukturiert, kein Key-Value
$wpdbctx.storageDirekter Speicherzugriff
Kategorien/SchlagwörterTaxonomienHierarchie erhalten

API-Import (fortgeschritten)

Der WordPress-Import ist über das Admin-Dashboard und die REST-API verfügbar. Für die beste Erfahrung den Import-Assistenten nutzen – er bietet Feldzuordnung, Konfliktlösung und Fortschrittsanzeige.

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

Fehlerbehebung

„XML parsing error“

Die Exportdatei ist möglicherweise beschädigt oder unvollständig. Erneut aus WordPress exportieren.

Medien-Download schlägt fehl

Einige Bilder können hinter Authentifizierung liegen oder umgezogen sein. Der Import läuft weiter; fehlgeschlagene URLs werden protokolliert.

Feldtyp-Konflikte

Wenn eine bestehende Collection ein Feld mit inkompatiblem Typ hat, zeigt der Assistent den Konflikt. Dann entweder:

  • EmDash-Feld umbenennen
  • WordPress-Feldzuordnung ändern
  • Collection löschen und neu anlegen

Große Exporte

Bei Exporten über 100 MB:

  1. Post Types in WordPress getrennt exportieren
  2. Dateien nacheinander importieren
  3. CLI mit --resume für Zuverlässigkeit nutzen

Nächste Schritte