EmDash importa contenuti da WordPress e altre piattaforme. Ogni fonte di importazione rileva una piattaforma, analizza il suo contenuto e lo recupera nel tuo sito.
Fonti di importazione
| ID Fonte | Piattaforma | Sonda | OAuth | Importazione completa |
|---|---|---|---|---|
wxr | File di esportazione WordPress | No | No | Sì |
wordpress-com | WordPress.com | Sì | Sì | Sì |
wordpress-rest | WordPress self-hosted | Sì | No | Solo sonda |
Caricamento file WXR
Il metodo di importazione più completo. Carica un file di esportazione WordPress eXtended RSS (WXR) direttamente nella dashboard di amministrazione.
Capacità:
- Tutti i tipi di post (inclusi quelli personalizzati)
- Tutti i campi meta
- Bozze e post privati
- Gerarchia di tassonomia completa
- Metadati degli allegati multimediali
Come ottenere un file WXR:
- Nell’admin di WordPress, vai su Strumenti → Esporta
- Seleziona Tutti i contenuti o tipi di post specifici
- Clicca su Scarica file di esportazione
- Carica il file
.xmlsu EmDash
OAuth di WordPress.com
Per i siti ospitati su WordPress.com, connettiti tramite OAuth per importare senza esportazioni manuali di file.
- Inserisci l’URL del tuo sito WordPress.com
- Clicca su Connetti con WordPress.com
- Autorizza EmDash nel popup di WordPress.com
- Seleziona i contenuti da importare
Cosa è incluso:
- Contenuti pubblicati e bozze
- Post privati (con autorizzazione)
- File multimediali tramite API
- Campi personalizzati esposti all’API REST
Sonda dell’API REST di WordPress
Quando inserisci un URL, EmDash sonda il sito per rilevare WordPress e mostrare i contenuti disponibili:
Rilevato: WordPress 6.4
├── Post: 127 (pubblicati)
├── Pagine: 12 (pubblicate)
└── Media: 89 file
Nota: Le bozze e i contenuti privati richiedono l'autenticazione
o un'esportazione WXR completa.
La sonda REST è informativa. Per importazioni complete, suggerisce di caricare un file WXR o di connettersi tramite OAuth (per WordPress.com).
Flusso di importazione
Tutte le fonti seguono lo stesso flusso:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Connetti │────▶│ Analizza │────▶│ Prepara │────▶│ Esegui │
│ (sonda/ │ │ (verifica │ │ (crea │ │ (importa │
│ carica) │ │ schema) │ │ schema) │ │ contenuto) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
Passo 1: Connetti
Inserisci un URL per sondare o carica un file direttamente.
Il sondaggio URL esegue tutte le fonti registrate in parallelo. La corrispondenza con la massima confidenza determina l’azione suggerita successiva:
- Sito WordPress.com → Offrire connessione OAuth
- WordPress self-hosted → Mostrare istruzioni di esportazione
- Sconosciuto → Suggerire caricamento file
Passo 2: Analizza
La fonte analizza i contenuti e verifica la compatibilità dello schema:
Tipi di post:
├── post (127) → posts [Nuova collezione]
├── page (12) → pages [Esistente, compatibile]
├── product (45) → products [Aggiungi 3 campi]
└── revision (234) → [Salta - tipo interno]
Modifiche dello schema richieste:
├── Crea collezione: posts
├── Aggiungi campi a pages: featured_image
└── Crea collezione: products
Ogni tipo di post mostra il suo stato:
| Stato | Significato |
|---|---|
| Pronto | La collezione esiste con campi compatibili |
| Nuova collezione | Sarà creata automaticamente |
| Aggiungi campi | La collezione esiste, vengono aggiunti i campi mancanti |
| Incompatibile | Conflitti di tipo di campo (necessaria correzione manuale) |
Passo 3: Prepara lo schema
Clicca su Crea schema e importa per:
- Creare nuove collezioni
- Aggiungere campi mancanti con i tipi di colonna corretti
- Configurare le tabelle di contenuto con indici
Passo 4: Esegui importazione
I contenuti vengono importati in sequenza:
- Gutenberg/HTML convertito in Portable Text
- Stato di WordPress mappato allo stato di EmDash
- Autori di WordPress mappati alla proprietà (
authorId) e alle firme di presentazione - Tassonomie create e collegate
- Blocchi riutilizzabili (
wp_block) importati come Sezioni - Progresso mostrato in tempo reale
Comportamento dell’importazione degli autori:
- Se una mappatura autore punta a un utente EmDash, la proprietà viene impostata su quell’utente e viene creata/riutilizzata una firma collegata per lo stesso utente.
- Se non c’è una mappatura utente, viene creata/riutilizzata una firma ospite dall’identità dell’autore WordPress.
- Le voci importate ottengono crediti di firma ordinati, con il primo credito impostato come
primaryBylineId.
Passo 5: Importazione media (Opzionale)
Dopo i contenuti, importa opzionalmente i media:
-
Analisi — Mostra i conteggi degli allegati per tipo
Media trovati: ├── Immagini: 75 file ├── Video: 10 file └── Altro: 4 file -
Download — Streaming da URL WordPress con progresso
Importazione media... ├── 45 di 89 (50%) ├── Corrente: vacation-photo.jpg └── Stato: Caricamento -
Riscrittura URL — Contenuto aggiornato automaticamente con nuovi URL
L’importazione media utilizza l’hashing del contenuto (xxHash64) per la deduplicazione. La stessa immagine utilizzata in più post viene archiviata una sola volta.
Endpoint API
Il sistema di importazione espone questi endpoint:
Sonda URL
Rileva la piattaforma dietro un URL con una richiesta di sonda:
POST /_emdash/api/import/probe
Content-Type: application/json
{ "url": "https://example.com" }
La risposta contiene la piattaforma rilevata e l’azione suggerita.
Analizza WXR
Carica un file WXR per analizzare i suoi tipi di post e la compatibilità dello schema:
POST /_emdash/api/import/wordpress/analyze
Content-Type: multipart/form-data
file: [Esportazione WordPress .xml]
La risposta contiene l’analisi dei tipi di post con la compatibilità dello schema.
Prepara schema
Crea le collezioni e i campi per i tipi di post selezionati:
POST /_emdash/api/import/wordpress/prepare
Content-Type: application/json
{
"postTypes": [
{ "name": "post", "collection": "posts", "enabled": true }
]
}
Esegui importazione
Importa il contenuto nelle collezioni mappate:
POST /_emdash/api/import/wordpress/execute
Content-Type: multipart/form-data
file: [Esportazione WordPress .xml]
config: { "postTypeMappings": { "post": { "collection": "posts" } } }
Importa media
Scarica e archivia gli allegati multimediali referenziati dall’importazione:
POST /_emdash/api/import/wordpress/media
Content-Type: application/json
{
"attachments": [{ "id": 123, "url": "https://..." }],
"stream": true
}
La risposta trasmette aggiornamenti di progresso NDJSON durante il download e l’upload.
Riscrivi URL
Sostituisci i vecchi URL dei media nel contenuto importato con i loro equivalenti archiviati:
POST /_emdash/api/import/wordpress/rewrite-urls
Content-Type: application/json
{
"urlMap": { "https://old.com/image.jpg": "/_emdash/media/abc123" }
}
Gestione degli errori
Errori recuperabili
- Timeout di rete — Riprovato con backoff
- Errore di analisi di un singolo elemento — Registrato, saltato, l’importazione continua
- Errore di download media — Contrassegnato per gestione manuale
Errori fatali
- Formato file non valido — L’importazione si interrompe con messaggio di errore
- Connessione al database persa — L’importazione si mette in pausa, consente ripresa
- Quota di archiviazione superata — L’importazione si interrompe, mostra l’utilizzo
Rapporto errori
Dopo il completamento di un’importazione, EmDash mostra un riepilogo di ciò che è riuscito, di ciò che è stato modificato e di ciò che è fallito:
Importazione completata
✓ 125 post importati
✓ 12 pagine importate
✓ 85 riferimenti media registrati
⚠ 2 elementi hanno avuto avvisi:
- Post "Special Characters ñ" - codifica del titolo corretta
- Pagina "About" - slug duplicato rinominato in "about-1"
✗ 1 elemento fallito:
- ID post 456 - errore di analisi del contenuto (salvato come bozza)
Gli elementi falliti vengono salvati come bozze con il contenuto originale in _importError per la revisione.
Fonti personalizzate
Per importare da una piattaforma che le fonti integrate non coprono, implementa l’interfaccia ImportSource e registrala sull’integrazione:
import { mySource } from "./src/import/custom-source";
export default defineConfig({
integrations: [
emdash({
import: { sources: [mySource] },
}),
],
});
L’interfaccia (probe, analyze, fetchContent) e la forma di output normalizzata sono documentate in Architettura (interni).
Prossimi passi
- Migrazione WordPress — Guida completa alla migrazione da WordPress
- Porting di plugin — Trasferire plugin WordPress su EmDash