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-ID | Eingabe | Importiert Inhalte | Zugriff |
|---|---|---|---|
wxr | WordPress-Exportdatei .xml | Ja | Im Export vorhandene Daten |
wordpress-plugin | Website-URL plus EmDash-Exporter-Zugangsdaten | Ja | Exporter-Endpunkte, einschließlich authentifizierter Inhalte |
wordpress-rest | Öffentliche Website-URL | Nein | Nur 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.
-
Öffnen Sie in WordPress Tools → Export, wählen Sie die benötigten Inhalte aus und laden Sie die XML-Datei herunter.
-
Wählen Sie in EmDash in der Admin-Seitenleiste Import und laden Sie die Datei hoch.
-
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:
- Verbinden. Laden Sie eine WXR-Datei hoch, fügen Sie einen Migrationsschlüssel des EmDash Exporters ein oder geben Sie eine Website-URL ein.
- Analysieren. Beitragstypen, erforderliche Felder, Autoren, Anhänge und Schema-Kompatibilität werden gelesen.
- Prüfen. Wählen Sie Beitragstypen, Sammlungszuordnungen, Autoren und unterstützte Zusatzdaten aus.
- Vorbereiten. Fehlende Sammlungen und Felder werden erstellt. Vorhandene Felder mit inkompatiblen Typen blockieren diese Zuordnung.
- Importieren. Inhalte werden konvertiert und erstellt. Der Exporter-Pfad verwendet begrenzte Anfragen für Inhalte, Kommentare und den Abschluss.
- 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:
| Zustand | Bedeutung |
|---|---|
| Ready | Die Sammlung und die erforderlichen Felder haben bereits kompatible Typen |
| New collection | Der Vorbereitungsschritt erstellt die Sammlung und ihre erforderlichen Felder |
| Add fields | Die Sammlung existiert, und der Vorbereitungsschritt fügt fehlende Felder hinzu |
| Incompatible | Ein 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-Status | EmDash-Status |
|---|---|
publish | published |
draft | draft |
pending | draft |
private | draft |
future, trash oder ein anderer Wert | draft |
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 mitpostTypeMappings,skipExisting, optionalauthorMappings, optionalimportSectionsund einem optionalen importweitenlocale.
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
- Migration von WordPress für das Verfahren für Administratoren.
- Ein WordPress-Theme portieren, nachdem die Inhalte importiert wurden.
- WordPress-Plugins portieren, wenn die Website von benutzerdefiniertem Verhalten abhängt.