Importation de contenu

Sur cette page

EmDash importe le contenu WordPress via la page Import from WordPress à l’adresse /_emdash/admin/import/wordpress. L’importeur peut analyser un fichier WordPress eXtended RSS (WXR) ou se connecter à un site qui exécute le plugin EmDash Exporter.

Sources d’importation

Le registre des sources contient trois sources WordPress :

ID de sourceEntréeImporte le contenuAccès
wxrFichier d’export .xml de WordPressOuiLes données présentes dans l’export
wordpress-pluginURL du site et identifiants EmDash ExporterOuiPoints de terminaison de l’exporteur, y compris le contenu authentifié
wordpress-restURL publique du siteNonSonde et décomptes publics uniquement

Il n’existe pas de source d’importation OAuth wordpress-com. Un site WordPress.com doit utiliser un export WXR ou une connexion EmDash Exporter compatible.

Importer un fichier WXR

Utilisez WXR lorsque WordPress peut exporter le contenu dont vous avez besoin et que l’EmDash Exporter ne peut pas être installé.

  1. Dans WordPress, ouvrez Tools → Export, sélectionnez le contenu nécessaire et téléchargez le fichier XML.

  2. Dans EmDash, sélectionnez Import dans la barre latérale de l’administration et téléversez le fichier.

  3. Examinez les types de contenu, champs, auteurs, taxonomies, blocs réutilisables et URL de pièces jointes détectés avant de créer le schéma ou le contenu.

Le XML contient les métadonnées des pièces jointes et les URL sources, pas les octets des médias. Gardez WordPress accessible jusqu’à la fin de la copie facultative des médias.

Connecter EmDash Exporter

Utilisez l’exporteur lorsque vous contrôlez le site WordPress et que vous avez besoin de données authentifiées, comme les brouillons, les commentaires, les menus ou les réglages pris en charge. Générez une clé de migration sous Tools → EmDash Migration, ou connectez-vous avec un nom d’utilisateur WordPress et un mot de passe d’application. L’exporteur envoie les données via ses points de terminaison d’API emdash/v1 ; il ne donne pas à EmDash un accès direct à la base de données.

Flux d’importation de l’administration

L’administration exécute les étapes suivantes :

  1. Connecter. Téléversez un fichier WXR, collez une clé de migration d’EmDash Exporter ou saisissez l’URL d’un site.
  2. Analyser. Lecture des types de contenu, des champs obligatoires, des auteurs, des pièces jointes et de la compatibilité du schéma.
  3. Examiner. Sélectionnez les types de contenu, les correspondances de collections, les auteurs et les extras pris en charge.
  4. Préparer. Création des collections et champs manquants. Les champs existants dont le type est incompatible bloquent cette correspondance.
  5. Importer. Conversion et création du contenu. Le chemin de l’exporteur utilise des requêtes de taille limitée pour le contenu, les commentaires et la finalisation.
  6. Copier les médias. Téléchargement des pièces jointes WXR sélectionnées dans le stockage EmDash et réécriture des URL correspondantes.

Le chemin WXR peut importer des articles, des pages, des types de contenu personnalisés, des taxonomies, des blocs réutilisables, des auteurs ou des bylines d’invité, ainsi que les médias listés dans l’export. Le chemin de l’exporteur peut en plus récupérer, depuis l’API WordPress active, les commentaires, les menus, certains réglages du site et les valeurs SEO prises en charge.

Comprendre l’analyse

Pour chaque type de contenu détecté, l’écran d’examen affiche la collection suggérée et l’un des quatre états du schéma :

ÉtatSignification
ReadyLa collection et les champs obligatoires ont déjà des types compatibles
New collectionL’étape de préparation créera la collection et ses champs obligatoires
Add fieldsLa collection existe et l’étape de préparation ajoutera les champs manquants
IncompatibleUn champ existant a un type différent ; corrigez la correspondance ou le schéma avant d’importer ce type de contenu

L’étape de préparation est additive. Elle ne change pas le type d’un champ existant pour qu’un import convienne.

Correspondance des statuts

Les routes de contenu enregistrent deux statuts à partir d’un import WordPress :

Statut WordPressStatut EmDash
publishpublished
draftdraft
pendingdraft
privatedraft
future, trash ou une autre valeurdraft

L’importeur ne conserve pas la sémantique WordPress de « en attente », « privé », « planifié » ou « corbeille ». Examinez ces entrées avant de les publier dans EmDash.

Contenu et identifiants

Les sources WXR et exporteur convertissent le balisage Gutenberg en Portable Text. Elles font correspondre post à posts, page à pages et les types de contenu personnalisés connus à des slugs de collection. Les types de contenu internes de WordPress sont exclus. Les blocs réutilisables (wp_block) sont traités comme des sections EmDash plutôt que comme des entrées ordinaires.

Pour une entrée importée :

  • Le slug de l’article WordPress devient le slug EmDash lorsqu’il est disponible.
  • EmDash génère son propre ID de base de données.
  • Les correspondances d’auteurs rattachent un utilisateur EmDash. Un auteur WordPress non associé peut devenir une byline d’invité réutilisable.
  • Les ID WordPress sont utilisés de manière transitoire pour résoudre des relations comme les menus, les commentaires, les images mises en avant et les traductions. Ils ne constituent pas l’identité persistante servant à détecter une entrée WXR existante.

Les relances WXR avec skipExisting font correspondre une entrée existante par collection, slug et locale. Un slug modifié peut donc créer une autre entrée. Le chemin de l’exporteur applique la même vérification de slug et de locale et reconstruit sa carte des relations par ID WordPress à partir des entrées qu’il ignore.

Copie et déduplication des médias

L’étape des médias télécharge l’URL de chaque pièce jointe, calcule un hachage SHA-1 des octets téléchargés et recherche une ligne de média existante portant ce hachage de contenu. Des octets identiques réutilisent l’enregistrement de média existant même lorsque les URL WordPress diffèrent.

Le hachage est stocké avec le préfixe sha1:. C’est une clé de déduplication, pas une signature de sécurité. Deux URL ne sont pas considérées comme des doublons du simple fait que leurs noms de fichier correspondent.

Après la copie des médias, l’importeur réécrit les URL correspondantes dans les champs Portable Text, texte, chaîne, image et fichier. Gardez l’origine WordPress en ligne jusqu’à ce que les téléchargements et les pages réécrites aient été vérifiés.

Comportement en cas de nouvelle tentative

L’administration ne stocke pas de jeton de reprise durable pour un import WXR. Si une requête échoue :

  • Relancez l’analyse et l’import avec skip existing activé.
  • Les entrées existantes sont ignorées par collection, slug et locale.
  • Relancer les médias est sans risque pour les fichiers déjà stockés, car les téléchargements identiques octet pour octet réutilisent le hachage de contenu.
  • Examinez les modifications partielles du schéma et les entrées dont le slug a changé avant de réessayer.

Le flux de l’exporteur est découpé en blocs pour respecter les limites de Worker. Le navigateur transporte les curseurs et les cartes de relations WordPress vers EmDash entre les requêtes. Si le navigateur perd cet état, redémarrez l’import ; les entrées ignorées reconstruisent la carte des relations au fil du traitement des pages de contenu.

La CLI distincte emdash import wordpress écrit des fichiers JSON convertis dans un répertoire de sortie. Son option --resume lit .wp-migration-progress.json et ignore les ID d’articles et de pièces jointes WordPress qui y sont déjà enregistrés. Ce flux de conversion en fichiers n’est pas l’import en base de données de l’administration et ne rend pas les requêtes de l’administration reprenables.

Contrats de l’API d’administration

Ces points de terminaison alimentent la page d’administration authentifiée. Ils exigent une session administrateur avec import:execute et l’en-tête X-EmDash-Request: 1. Les réponses de succès utilisent normalement l’enveloppe { "success": true, "data": ... } ; les erreurs utilisent { "success": false, "error": { "code", "message" } }.

Sonder une URL

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

Sa valeur data est { success: true, result }. result contient url, isWordPress, bestMatch et allMatches. Une simple correspondance avec l’API REST de WordPress recommande un téléversement WXR ; elle n’active pas l’import REST direct.

Analyser un fichier WXR

POST /_emdash/api/import/wordpress/analyze accepte multipart/form-data avec une partie file. Sa valeur data contient le site, l’analyse des types de contenu, le résumé des pièces jointes, le résumé des auteurs, les décomptes de taxonomies et les suggestions de champs personnalisés.

Préparer le schéma

POST /_emdash/api/import/wordpress/prepare accepte cette forme de JSON :

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

Sa valeur data contient success, collectionsCreated, fieldsCreated et les errors par collection.

Exécuter un import WXR

POST /_emdash/api/import/wordpress/execute accepte multipart/form-data avec :

  • file : le fichier WXR.
  • config : une chaîne JSON contenant postTypeMappings, skipExisting, éventuellement authorMappings, éventuellement importSections et un locale facultatif valable pour tout l’import.

Sa valeur data contient success, imported, skipped, errors, byCollection et des résumés facultatifs des sections et des taxonomies.

Copier les médias

POST /_emdash/api/import/wordpress/media accepte le JSON { "attachments": [...], "stream": true }. Le streaming est la valeur par défaut. Une réponse en streaming est du JSON délimité par des sauts de ligne, avec des enregistrements progress suivis d’un enregistrement result ; elle n’utilise pas l’enveloppe normale de l’API. Définissez stream sur false pour recevoir l’enveloppe normale autour de { imported, failed, urlMap }.

Réécrire les URL des médias

POST /_emdash/api/import/wordpress/rewrite-urls accepte le JSON { "urlMap": { "old": "new" }, "collections": ["posts"] }. La liste facultative de collections limite la réécriture. Sa valeur data contient le nombre d’entrées mises à jour et d’URL réécrites, ainsi que les erreurs.

Utiliser l’API de l’exporteur

POST /_emdash/api/import/wordpress-plugin/analyze accepte le JSON { "url", "token" }, où token est une valeur d’authentification Basic encodée en Base64 pour un utilisateur WordPress et un mot de passe d’application. Sa valeur data est { success: true, analysis }.

POST /_emdash/api/import/wordpress-plugin/execute accepte le JSON avec url, token et config. L’administration fournit également une phase (content, comments ou finalize). Chaque réponse contient done, un cursor suivant facultatif, un result partiel et un objet chunk avec les éventuels idMap, translationGroups ou commentRoots mis à jour. L’administration fusionne les valeurs de chunk et envoie les cartes accumulées avec la requête suivante.

Dépannage

Le site est détecté mais ne peut pas être importé directement

Un résultat wordpress-rest n’est qu’une sonde. Téléversez un fichier WXR ou installez EmDash Exporter, puis sondez à nouveau le site.

Un type de contenu est incompatible

Développez le type de contenu dans l’écran d’examen pour trouver le champ en conflit. Modifiez la collection cible ou conciliez ce champ sous Content Types. L’importeur ne remplace pas le type d’un champ existant.

Certains médias ont échoué

Le résultat final des médias liste les URL sources en échec. Vérifiez que chaque URL est publique, existe toujours et ne redirige pas vers une adresse de réseau privé. Relancez l’étape des médias après avoir corrigé l’accès ; les fichiers déjà terminés et identiques octet pour octet seront réutilisés.

Prochaines étapes