EmDash importiert Inhalte aus WordPress und anderen Plattformen. Jede Importquelle erkennt eine Plattform, analysiert deren Inhalte und lädt sie in Ihre Website.
Importquellen
| Quell-ID | Plattform | Probe | OAuth | Vollständiger Import |
|---|---|---|---|---|
wxr | WordPress-Exportdatei | Nein | Nein | Ja |
wordpress-com | WordPress.com | Ja | Ja | Ja |
wordpress-rest | Selbst gehostetes WordPress | Ja | Nein | Nur Probe |
WXR-Datei-Upload
Die vollständigste Importmethode. Laden Sie eine WordPress eXtended RSS (WXR) Exportdatei direkt in das Admin-Dashboard hoch.
Funktionen:
- Alle Beitragstypen (einschließlich benutzerdefinierter)
- Alle Meta-Felder
- Entwürfe und private Beiträge
- Vollständige Taxonomie-Hierarchie
- Medienanhang-Metadaten
So erhalten Sie eine WXR-Datei:
- Gehen Sie im WordPress-Admin zu Werkzeuge → Exportieren
- Wählen Sie Alle Inhalte oder bestimmte Beitragstypen aus
- Klicken Sie auf Exportdatei herunterladen
- Laden Sie die
.xml-Datei in EmDash hoch
WordPress.com OAuth
Für auf WordPress.com gehostete Websites verbinden Sie sich über OAuth, um ohne manuelle Dateiexporte zu importieren.
- Geben Sie Ihre WordPress.com-Website-URL ein
- Klicken Sie auf Mit WordPress.com verbinden
- Autorisieren Sie EmDash im WordPress.com-Popup
- Wählen Sie die zu importierenden Inhalte aus
Was enthalten ist:
- Veröffentlichte und Entwurfsinhalte
- Private Beiträge (mit Autorisierung)
- Mediendateien über API
- Benutzerdefinierte Felder, die für REST API verfügbar sind
WordPress REST API Probe
Wenn Sie eine URL eingeben, prüft EmDash die Website, um WordPress zu erkennen und verfügbare Inhalte anzuzeigen:
Erkannt: WordPress 6.4
├── Beiträge: 127 (veröffentlicht)
├── Seiten: 12 (veröffentlicht)
└── Medien: 89 Dateien
Hinweis: Entwürfe und private Inhalte erfordern Authentifizierung
oder einen vollständigen WXR-Export.
Die REST-Probe ist informativ. Für vollständige Importe schlägt sie das Hochladen einer WXR-Datei oder die Verbindung über OAuth vor (für WordPress.com).
Import-Ablauf
Alle Quellen folgen demselben Ablauf:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Verbinden │────▶│ Analysieren │────▶│ Vorbereiten │────▶│ Ausführen │
│ (Probe/ │ │ (Schema │ │ (Schema │ │ (Inhalt │
│ Upload) │ │ Prüfung) │ │ erstellen) │ │ importieren)│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
Schritt 1: Verbinden
Geben Sie eine URL ein, um zu prüfen, oder laden Sie eine Datei direkt hoch.
URL-Prüfung führt alle registrierten Quellen parallel aus. Die Übereinstimmung mit der höchsten Konfidenz bestimmt die vorgeschlagene nächste Aktion:
- WordPress.com-Website → OAuth-Verbindung anbieten
- Selbst gehostetes WordPress → Export-Anweisungen anzeigen
- Unbekannt → Datei-Upload vorschlagen
Schritt 2: Analysieren
Die Quelle analysiert Inhalte und prüft die Schema-Kompatibilität:
Beitragstypen:
├── post (127) → posts [Neue Sammlung]
├── page (12) → pages [Vorhanden, kompatibel]
├── product (45) → products [3 Felder hinzufügen]
└── revision (234) → [Überspringen - interner Typ]
Erforderliche Schema-Änderungen:
├── Sammlung erstellen: posts
├── Felder zu pages hinzufügen: featured_image
└── Sammlung erstellen: products
Jeder Beitragstyp zeigt seinen Status:
| Status | Bedeutung |
|---|---|
| Bereit | Sammlung existiert mit kompatiblen Feldern |
| Neue Sammlung | Wird automatisch erstellt |
| Felder hinzufügen | Sammlung existiert, fehlende Felder werden hinzugefügt |
| Inkompatibel | Feldtypkonflikte (manuelle Behebung erforderlich) |
Schritt 3: Schema vorbereiten
Klicken Sie auf Schema erstellen & importieren, um:
- Neue Sammlungen zu erstellen
- Fehlende Felder mit korrekten Spaltentypen hinzuzufügen
- Inhaltstabellen mit Indizes einzurichten
Schritt 4: Import ausführen
Inhalte werden sequenziell importiert:
- Gutenberg/HTML wird in Portable Text konvertiert
- WordPress-Status wird auf EmDash-Status abgebildet
- WordPress-Autoren werden auf Eigentümerschaft (
authorId) und Präsentations-Bylines abgebildet - Taxonomien werden erstellt und verknüpft
- Wiederverwendbare Blöcke (
wp_block) werden als Abschnitte importiert - Fortschritt wird in Echtzeit angezeigt
Verhalten beim Autorenimport:
- Wenn eine Autorenzuordnung auf einen EmDash-Benutzer verweist, wird die Eigentümerschaft auf diesen Benutzer festgelegt und eine verknüpfte Byline für denselben Benutzer erstellt/wiederverwendet.
- Wenn keine Benutzerzuordnung vorhanden ist, wird eine Gast-Byline aus der WordPress-Autorenidentität erstellt/wiederverwendet.
- Importierte Einträge erhalten geordnete Byline-Credits, wobei der erste Credit als
primaryBylineIdfestgelegt wird.
Schritt 5: Medienimport (Optional)
Nach dem Inhalt können Sie optional Medien importieren:
-
Analyse — Zeigt Anhanganzahl nach Typ an
Gefundene Medien: ├── Bilder: 75 Dateien ├── Video: 10 Dateien └── Andere: 4 Dateien -
Download — Streamt von WordPress-URLs mit Fortschrittsanzeige
Medien werden importiert... ├── 45 von 89 (50%) ├── Aktuell: vacation-photo.jpg └── Status: Hochladen -
URLs umschreiben — Inhalt wird automatisch mit neuen URLs aktualisiert
Der Medienimport verwendet Content-Hashing (xxHash64) zur Deduplizierung. Dasselbe Bild, das in mehreren Beiträgen verwendet wird, wird nur einmal gespeichert.
API-Endpunkte
Das Importsystem stellt diese Endpunkte bereit:
URL prüfen
Erkennen Sie die Plattform hinter einer URL mit einer Prüfanfrage:
POST /_emdash/api/import/probe
Content-Type: application/json
{ "url": "https://example.com" }
Die Antwort enthält die erkannte Plattform und die vorgeschlagene Aktion.
WXR analysieren
Laden Sie eine WXR-Datei hoch, um ihre Beitragstypen und Schema-Kompatibilität zu analysieren:
POST /_emdash/api/import/wordpress/analyze
Content-Type: multipart/form-data
file: [WordPress export .xml]
Die Antwort enthält die Beitragstyp-Analyse mit Schema-Kompatibilität.
Schema vorbereiten
Erstellen Sie die Sammlungen und Felder für die ausgewählten Beitragstypen:
POST /_emdash/api/import/wordpress/prepare
Content-Type: application/json
{
"postTypes": [
{ "name": "post", "collection": "posts", "enabled": true }
]
}
Import ausführen
Importieren Sie den Inhalt in die zugeordneten Sammlungen:
POST /_emdash/api/import/wordpress/execute
Content-Type: multipart/form-data
file: [WordPress export .xml]
config: { "postTypeMappings": { "post": { "collection": "posts" } } }
Medien importieren
Laden Sie die vom Import referenzierten Medienanhänge herunter und speichern Sie sie:
POST /_emdash/api/import/wordpress/media
Content-Type: application/json
{
"attachments": [{ "id": 123, "url": "https://..." }],
"stream": true
}
Die Antwort streamt NDJSON-Fortschrittsaktualisierungen während des Downloads und Uploads.
URLs umschreiben
Ersetzen Sie alte Medien-URLs in importierten Inhalten durch ihre gespeicherten Äquivalente:
POST /_emdash/api/import/wordpress/rewrite-urls
Content-Type: application/json
{
"urlMap": { "https://old.com/image.jpg": "/_emdash/media/abc123" }
}
Fehlerbehandlung
Behebbare Fehler
- Netzwerk-Timeout — Mit Backoff wiederholt
- Einzelner Element-Parse-Fehler — Protokolliert, übersprungen, Import wird fortgesetzt
- Medien-Download-Fehler — Für manuelle Behandlung markiert
Fatale Fehler
- Ungültiges Dateiformat — Import stoppt mit Fehlermeldung
- Datenbankverbindung verloren — Import pausiert, erlaubt Wiederaufnahme
- Speicherkontingent überschritten — Import stoppt, zeigt Nutzung an
Fehlerbericht
Nach Abschluss eines Imports zeigt EmDash eine Zusammenfassung von Erfolgen, Anpassungen und Fehlern:
Import abgeschlossen
✓ 125 Beiträge importiert
✓ 12 Seiten importiert
✓ 85 Medienreferenzen aufgezeichnet
⚠ 2 Elemente hatten Warnungen:
- Beitrag "Special Characters ñ" - Titelkodierung behoben
- Seite "About" - Doppelter Slug in "about-1" umbenannt
✗ 1 Element fehlgeschlagen:
- Beitrags-ID 456 - Inhalts-Parse-Fehler (als Entwurf gespeichert)
Fehlgeschlagene Elemente werden als Entwürfe mit dem ursprünglichen Inhalt in _importError zur Überprüfung gespeichert.
Benutzerdefinierte Quellen
Um von einer Plattform zu importieren, die die integrierten Quellen nicht abdecken, implementieren Sie die ImportSource-Schnittstelle und registrieren Sie sie in der Integration:
import { mySource } from "./src/import/custom-source";
export default defineConfig({
integrations: [
emdash({
import: { sources: [mySource] },
}),
],
});
Die Schnittstelle (probe, analyze, fetchContent) und die normalisierte Ausgabeform sind in Architektur (Internes) dokumentiert.
Nächste Schritte
- WordPress-Migration — Vollständiger WordPress-Migrationsleitfaden
- Plugin-Portierung — WordPress-Plugins auf EmDash portieren