Importazione di contenuti

In questa pagina

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 FontePiattaformaSondaOAuthImportazione completa
wxrFile di esportazione WordPressNoNo
wordpress-comWordPress.com
wordpress-restWordPress self-hostedNoSolo 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:

  1. Nell’admin di WordPress, vai su Strumenti → Esporta
  2. Seleziona Tutti i contenuti o tipi di post specifici
  3. Clicca su Scarica file di esportazione
  4. Carica il file .xml su EmDash

OAuth di WordPress.com

Per i siti ospitati su WordPress.com, connettiti tramite OAuth per importare senza esportazioni manuali di file.

  1. Inserisci l’URL del tuo sito WordPress.com
  2. Clicca su Connetti con WordPress.com
  3. Autorizza EmDash nel popup di WordPress.com
  4. 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:

StatoSignificato
ProntoLa collezione esiste con campi compatibili
Nuova collezioneSarà creata automaticamente
Aggiungi campiLa collezione esiste, vengono aggiunti i campi mancanti
IncompatibileConflitti di tipo di campo (necessaria correzione manuale)

Passo 3: Prepara lo schema

Clicca su Crea schema e importa per:

  1. Creare nuove collezioni
  2. Aggiungere campi mancanti con i tipi di colonna corretti
  3. 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:

  1. Analisi — Mostra i conteggi degli allegati per tipo

    Media trovati:
    ├── Immagini: 75 file
    ├── Video: 10 file
    └── Altro: 4 file
  2. Download — Streaming da URL WordPress con progresso

    Importazione media...
    ├── 45 di 89 (50%)
    ├── Corrente: vacation-photo.jpg
    └── Stato: Caricamento
  3. 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