Inhaltsimport

Auf dieser Seite

EmDash importiert WordPress-Inhalte über die Seite Import from WordPress unter /_emdash/admin/import/wordpress. Der Importer kann eine WordPress-eXtended-RSS-Datei (WXR) analysieren oder sich mit einer Website verbinden, auf der das EmDash-Exporter-Plugin läuft.

Importquellen

Das Quellenregister enthält drei WordPress-Quellen:

Quellen-IDEingabeImportiert InhalteZugriff
wxrWordPress-Exportdatei .xmlJaIm Export vorhandene Daten
wordpress-pluginWebsite-URL plus EmDash-Exporter-ZugangsdatenJaExporter-Endpunkte, einschließlich authentifizierter Inhalte
wordpress-restÖffentliche Website-URLNeinNur Abfrage und öffentliche Zählungen

Es gibt keine OAuth-Importquelle wordpress-com. Eine WordPress.com-Website muss einen WXR-Export oder eine kompatible EmDash-Exporter-Verbindung verwenden.

Eine WXR-Datei importieren

Verwenden Sie WXR, wenn WordPress die benötigten Inhalte exportieren kann und der EmDash Exporter nicht installiert werden kann.

  1. Öffnen Sie in WordPress Tools → Export, wählen Sie die benötigten Inhalte aus und laden Sie die XML-Datei herunter.

  2. Wählen Sie in EmDash in der Admin-Seitenleiste Import und laden Sie die Datei hoch.

  3. Prüfen Sie die erkannten Beitragstypen, Felder, Autoren, Taxonomien, wiederverwendbaren Blöcke und Anhang-URLs, bevor Sie Schema oder Inhalte erstellen.

Das XML enthält Anhang-Metadaten und Quell-URLs, nicht die Bytes der Medien. Halten Sie WordPress erreichbar, bis das optionale Kopieren der Medien abgeschlossen ist.

Den EmDash Exporter verbinden

Verwenden Sie den Exporter, wenn Sie die WordPress-Website kontrollieren und authentifizierte Daten wie Entwürfe oder unterstützte Einstellungen benötigen. Kommentare, Menüs, das Logo, das Favicon und die Seite Tools → EmDash Migration, die einen Migrationsschlüssel erzeugt, erfordern Exporter 1.2.0 oder neuer. Jede Exporter-Version kann sich mit einem WordPress-Benutzernamen und einem Anwendungspasswort verbinden. Der Exporter sendet Daten über seine emdash/v1-API-Endpunkte; er gewährt EmDash keinen direkten Datenbankzugriff.

Ablauf des Admin-Imports

Der Admin führt diese Phasen aus:

  1. Verbinden. Laden Sie eine WXR-Datei hoch, fügen Sie einen Migrationsschlüssel des EmDash Exporters ein oder geben Sie eine Website-URL ein.
  2. Analysieren. Beitragstypen, erforderliche Felder, Autoren, Anhänge und Schema-Kompatibilität werden gelesen.
  3. Prüfen. Wählen Sie Beitragstypen, Sammlungszuordnungen, Autoren und unterstützte Zusatzdaten aus.
  4. Vorbereiten. Fehlende Sammlungen und Felder werden erstellt. Vorhandene Felder mit inkompatiblen Typen blockieren diese Zuordnung.
  5. Importieren. Inhalte werden konvertiert und erstellt. Der Exporter-Pfad verwendet begrenzte Anfragen für Inhalte, Kommentare und den Abschluss.
  6. Medien kopieren. Ausgewählte WXR-Anhänge werden in den EmDash-Speicher heruntergeladen, und passende URLs werden umgeschrieben.

Der WXR-Pfad kann Beiträge, Seiten, benutzerdefinierte Beitragstypen, Taxonomien, wiederverwendbare Blöcke, Autoren oder Gast-Bylines sowie die im Export aufgeführten Medien importieren. Der Exporter-Pfad kann zusätzlich ausgewählte Website-Einstellungen und unterstützte SEO-Werte aus der laufenden WordPress-API abrufen, und mit Exporter 1.2.0 oder neuer auch Kommentare, Menüs, das Logo und das Favicon.

Die Analyse verstehen

Für jeden erkannten Beitragstyp zeigt die Prüfungsansicht die vorgeschlagene Sammlung und einen von vier Schema-Zuständen:

ZustandBedeutung
ReadyDie Sammlung und die erforderlichen Felder haben bereits kompatible Typen
New collectionDer Vorbereitungsschritt erstellt die Sammlung und ihre erforderlichen Felder
Add fieldsDie Sammlung existiert, und der Vorbereitungsschritt fügt fehlende Felder hinzu
IncompatibleEin vorhandenes Feld hat einen anderen Typ; korrigieren Sie die Zuordnung oder das Schema, bevor Sie diesen Beitragstyp importieren

Der Vorbereitungsschritt ist additiv. Er ändert nicht den Typ eines vorhandenen Feldes, damit ein Import passt.

Status-Zuordnung

Die Inhaltsrouten speichern bei einem WordPress-Import zwei Status:

WordPress-StatusEmDash-Status
publishpublished
draftdraft
pendingdraft
privatedraft
future, trash oder ein anderer Wertdraft

Der Importer bewahrt die WordPress-Semantik von „Ausstehend“, „Privat“, „Geplant“ oder „Papierkorb“ nicht. Prüfen Sie diese Einträge, bevor Sie sie in EmDash veröffentlichen.

Inhalte und Kennungen

Die Quellen WXR und Exporter konvertieren Gutenberg-Markup in Portable Text. Sie ordnen post dem Slug posts, page dem Slug pages und bekannte benutzerdefinierte Beitragstypen Sammlungs-Slugs zu. Interne WordPress-Beitragstypen werden ausgeschlossen. Wiederverwendbare Blöcke (wp_block) werden als EmDash-Abschnitte statt als gewöhnliche Einträge behandelt.

Für einen importierten Eintrag gilt:

  • Der WordPress-Beitrags-Slug wird, sofern verfügbar, zum EmDash-Slug.
  • EmDash erzeugt seine eigene Datenbank-ID.
  • Autorenzuordnungen verknüpfen einen EmDash-Benutzer. Ein nicht zugeordneter WordPress-Autor kann zu einer wiederverwendbaren Gast-Byline werden.
  • WordPress-IDs werden nur vorübergehend verwendet, um Beziehungen wie Menüs, Kommentare, Beitragsbilder und Übersetzungen aufzulösen. Sie sind nicht die dauerhafte Identität, mit der ein vorhandener WXR-Eintrag erkannt wird.

WXR-Wiederholungen mit skipExisting ordnen einen vorhandenen Eintrag anhand von Sammlung, Slug und Locale zu. Ein geänderter Slug kann daher einen weiteren Eintrag erzeugen. Der Exporter-Pfad verwendet dieselbe Prüfung auf Slug und Locale und baut seine Beziehungszuordnung der WordPress-IDs aus den übersprungenen Einträgen neu auf.

Medien kopieren und deduplizieren

Der Medienschritt lädt jede Anhang-URL herunter, berechnet einen SHA-1-Hash der heruntergeladenen Bytes und sucht nach einer vorhandenen Medienzeile mit diesem Inhalts-Hash. Identische Bytes verwenden den vorhandenen Medieneintrag wieder, auch wenn sich die WordPress-URLs unterscheiden.

Der Hash wird mit dem Präfix sha1: gespeichert. Er ist ein Deduplizierungsschlüssel, keine Sicherheitssignatur. Zwei URLs gelten nicht schon deshalb als Duplikate, weil ihre Dateinamen übereinstimmen.

Nach dem Kopieren der Medien schreibt der Importer passende URLs in Portable-Text-, Text-, String-, Bild- und Dateifeldern um. Halten Sie den WordPress-Origin online, bis Downloads und umgeschriebene Seiten überprüft wurden.

Wiederholungsverhalten

Der Admin speichert für einen WXR-Import kein dauerhaftes Fortsetzungs-Token. Wenn eine Anfrage fehlschlägt:

  • Führen Sie die Analyse und den Import erneut aus, mit aktiviertem skip existing.
  • Vorhandene Einträge werden anhand von Sammlung, Slug und Locale übersprungen.
  • Das erneute Ausführen der Medien ist für bereits gespeicherte Dateien unbedenklich, weil byteidentische Downloads den Inhalts-Hash wiederverwenden.
  • Prüfen Sie teilweise Schemaänderungen und Einträge mit geänderten Slugs, bevor Sie es erneut versuchen.

Der Exporter-Ablauf ist in Blöcke aufgeteilt, damit er in die Worker-Limits passt. Der Browser trägt Cursor und die Beziehungszuordnungen von WordPress zu EmDash zwischen den Anfragen. Verliert der Browser diesen Zustand, starten Sie den Import neu; übersprungene Einträge bauen die Beziehungszuordnung wieder auf, während die Inhaltsseiten verarbeitet werden.

Die separate CLI emdash import wordpress schreibt konvertierte JSON-Dateien in ein Ausgabeverzeichnis. Ihre Option --resume liest .wp-migration-progress.json und überspringt die dort bereits erfassten WordPress-Beitrags- und Anhang-IDs. Dieser Workflow zur Dateikonvertierung ist nicht der Admin-Datenbankimport und macht Admin-Anfragen nicht fortsetzbar.

Admin-API-Verträge

Diese Endpunkte betreiben die authentifizierte Admin-Seite. Sie erfordern eine Admin-Sitzung mit import:execute und den Header X-EmDash-Request: 1. Erfolgsantworten verwenden normalerweise den Umschlag { "success": true, "data": ... }; Fehler verwenden { "success": false, "error": { "code", "message" } }.

Eine URL abfragen

POST /_emdash/api/import/probe akzeptiert JSON { "url": "https://example.com" }.

Der Wert data ist { success: true, result }. result enthält url, isWordPress, bestMatch und allMatches. Ein reiner WordPress-REST-Treffer empfiehlt einen WXR-Upload; er aktiviert keinen direkten REST-Import.

Eine WXR-Datei analysieren

POST /_emdash/api/import/wordpress/analyze akzeptiert multipart/form-data mit einem Teil file. Der Wert data enthält die Website, die Beitragstyp-Analyse, die Anhangs-Zusammenfassung, die Autoren-Zusammenfassung, Taxonomie-Zählungen und Vorschläge für benutzerdefinierte Felder.

Das Schema vorbereiten

POST /_emdash/api/import/wordpress/prepare akzeptiert diese JSON-Form:

{
  "postTypes": [
    {
      "name": "post",
      "collection": "posts",
      "fields": [
        {
          "slug": "title",
          "label": "Title",
          "type": "string",
          "required": true,
          "searchable": true
        }
      ]
    }
  ]
}

Der Wert data enthält success, collectionsCreated, fieldsCreated und errors pro Sammlung.

Einen WXR-Import ausführen

POST /_emdash/api/import/wordpress/execute akzeptiert multipart/form-data mit:

  • file: die WXR-Datei.
  • config: ein JSON-String mit postTypeMappings, skipExisting, optional authorMappings, optional importSections und einem optionalen importweiten locale.

Der Wert data enthält success, imported, skipped, errors, byCollection sowie optionale Zusammenfassungen zu Abschnitten und Taxonomien.

Medien kopieren

POST /_emdash/api/import/wordpress/media akzeptiert JSON { "attachments": [...], "stream": true }. Streaming ist die Voreinstellung. Eine Streaming-Antwort ist zeilengetrenntes JSON mit progress-Datensätzen, gefolgt von einem result-Datensatz; sie verwendet nicht den normalen API-Umschlag. Setzen Sie stream auf false, um den normalen Umschlag um { imported, failed, urlMap } zu erhalten.

Medien-URLs umschreiben

POST /_emdash/api/import/wordpress/rewrite-urls akzeptiert JSON { "urlMap": { "old": "new" }, "collections": ["posts"] }. Die optionale Sammlungsliste begrenzt das Umschreiben. Der Wert data enthält die Anzahl aktualisierter Einträge und umgeschriebener URLs sowie Fehler.

Die Exporter-API verwenden

POST /_emdash/api/import/wordpress-plugin/analyze akzeptiert JSON { "url", "token" }, wobei token ein Base64-kodierter Wert für die Basic-Authentifizierung mit einem WordPress-Benutzer und Anwendungspasswort ist. Der Wert data ist { success: true, analysis }.

POST /_emdash/api/import/wordpress-plugin/execute akzeptiert JSON mit url, token und config. Der Admin liefert außerdem eine phase (content, comments oder finalize). Jede Antwort enthält done, einen optionalen nächsten cursor, ein partielles result und ein chunk-Objekt mit aktualisierten idMap, translationGroups oder commentRoots. Der Admin führt die chunk-Werte zusammen und sendet die angesammelten Zuordnungen mit der nächsten Anfrage.

Fehlerbehebung

Die Website wird erkannt, kann aber nicht direkt importiert werden

Ein Ergebnis wordpress-rest ist nur eine Abfrage. Laden Sie eine WXR-Datei hoch oder installieren Sie den EmDash Exporter und fragen Sie die Website erneut ab.

Ein Beitragstyp ist inkompatibel

Klappen Sie den Beitragstyp in der Prüfungsansicht auf, um das konfligierende Feld zu finden. Ändern Sie die Zielsammlung oder gleichen Sie dieses Feld unter Content Types ab. Der Importer ersetzt keinen vorhandenen Feldtyp.

Einige Medien sind fehlgeschlagen

Das abschließende Medienergebnis listet fehlgeschlagene Quell-URLs auf. Vergewissern Sie sich, dass jede URL öffentlich ist, noch existiert und nicht auf eine private Netzwerkadresse weiterleitet. Wiederholen Sie den Medienschritt, nachdem Sie den Zugriff behoben haben; abgeschlossene, byteidentische Dateien werden wiederverwendet.

Nächste Schritte