Migrer depuis WordPress

Sur cette page

EmDash migre le contenu depuis WordPress. Importez vos articles, pages, médias et taxonomies via le tableau de bord administrateur.

Avant de commencer

Exportez votre contenu

Dans WordPress, allez dans Outils → Exporter et téléchargez un fichier d’exportation complet (.xml).

Sauvegardez votre site

Gardez votre site WordPress en ligne jusqu’à ce que vous ayez vérifié que la migration a réussi.

Méthodes d’importation

EmDash prend en charge trois méthodes pour importer du contenu WordPress :

MéthodeIdéal pourInclut les brouillonsNécessite auth
Téléchargement de fichier WXRMigrations complètesOuiNon
WordPress.comSites hébergés sur WordPress.comOuiOAuth
REST API (sonde)Vérifier le contenu avant l’exportationNonOptionnel

Le téléchargement de fichier WXR est recommandé pour la plupart des migrations. Il capture tout le contenu, y compris les brouillons, les champs personnalisés et les articles privés.

Importation de fichier WXR

  1. Exporter depuis WordPress

    Dans votre administration WordPress, allez dans Outils → Exporter → Tout le contenu → Télécharger le fichier d’exportation.

  2. Ouvrir l’assistant d’importation

    Dans EmDash, allez dans Admin → Paramètres → Importer → WordPress.

  3. Télécharger votre fichier d’exportation

    Glissez-déposez votre fichier .xml ou cliquez pour parcourir. Le fichier est analysé dans votre navigateur.

  4. Vérifier le contenu détecté

    L’assistant montre ce qui a été trouvé :

    Found in export:
    ├── Posts: 127 → posts [New collection]
    ├── Pages: 12  → pages [Add fields]
    └── Media: 89 attachments
  5. Configurer les mappages

    Basculez les types de publication à importer. EmDash fait automatiquement :

    • Crée de nouvelles collections pour les types de publication non mappés
    • Ajoute les champs manquants aux collections existantes
    • Avertit des conflits de types de champs
  6. Exécuter l’importation

    Cliquez sur Importer le contenu. La progression s’affiche au fur et à mesure que chaque élément est traité.

  7. Importer les médias (optionnel)

    Après l’importation du contenu, choisissez si vous souhaitez télécharger les fichiers médias. EmDash :

    • Télécharge depuis vos URLs WordPress
    • Déduplique par hash de contenu
    • Réécrit automatiquement les URLs dans votre contenu

Conversion de contenu

Gutenberg vers Portable Text

EmDash convertit les blocs Gutenberg en Portable Text, un format de contenu structuré.

Bloc GutenbergPortable TextNotes
core/paragraphblock style=“normal”Marques en ligne préservées
core/headingblock style=“h1-h6”Niveau depuis les attributs de bloc
core/imageimage blockRéférence média mise à jour
core/listblock with listItem typeOrdonnées et non ordonnées
core/quoteblock style=“blockquote”Citation incluse
core/codecode blockAttribut de langue préservé
core/embedembed blockURL et fournisseur stockés
core/gallerygallery blockTableau de références d’images
core/columnscolumns blockContenu imbriqué préservé
Blocs inconnushtmlBlockHTML brut préservé pour révision

Les blocs inconnus sont stockés comme htmlBlock avec le HTML original et les métadonnées du bloc. Vous pouvez les réviser et les convertir manuellement ou créer des composants Portable Text personnalisés pour les rendre.

Contenu de l’éditeur classique

Le HTML de l’éditeur classique est converti en blocs Portable Text. Les styles en ligne (<strong>, <em>, <a>) deviennent des marques sur les spans.

Mappage des statuts

Statut WordPressStatut EmDash
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

Importation de taxonomie

Les catégories et tags sont importés comme taxonomies avec hiérarchie préservée :

WordPress:                    EmDash:
├── Categories (hierarchical) ├── taxonomies table
│   ├── News                  │   ├── category/news
│   │   ├── Local             │   ├── category/local (parent: news)
│   │   └── World             │   ├── category/world (parent: news)
│   └── Sports                │   └── category/sports
└── Tags (flat)               └── content_taxonomies junction
    ├── featured                  ├── tag/featured
    └── breaking                  └── tag/breaking

Champs personnalisés et ACF

Les méta de publication WordPress et les champs ACF sont analysés pendant l’importation :

  1. Phase d’analyse

    L’assistant détecte les champs personnalisés et suggère les types de champs EmDash :

    Custom Fields:
    ├── subtitle (string, 45 posts)
    ├── _yoast_wpseo_title → seo.title (string, 127 posts)
    ├── _thumbnail_id → featuredImage (reference, 89 posts)
    └── price (number, 23 posts)
  2. Mappage des champs

    Les champs internes WordPress (commençant par _edit_, _wp_) sont masqués par défaut. Les champs de plugins SEO sont mappés vers un objet seo.

  3. Inférence de type

    EmDash infère les types de champs à partir des valeurs :

    • Chaînes numériques → number
    • "1", "0", "true", "false"boolean
    • Dates ISO → date
    • PHP/JSON sérialisé → json
    • IDs WordPress (ex. _thumbnail_id) → reference

Redirections d’URL

Après l’importation, EmDash génère une carte de redirection :

{
	"redirects": [
		{ "from": "/?p=123", "to": "/posts/hello-world" },
		{ "from": "/2024/01/hello-world/", "to": "/posts/hello-world" },
		{ "from": "/category/news/", "to": "/categories/news" }
	],
	"feeds": [
		{ "from": "/feed/", "to": "/rss.xml" },
		{ "from": "/feed/atom/", "to": "/atom.xml" }
	]
}

Appliquez ces redirections à :

  • Règles de redirection Cloudflare
  • La configuration de redirection de votre plateforme d’hébergement
  • L’option redirects d’Astro dans astro.config.mjs

Référence de mappage de concepts

Utilisez ce tableau lors de l’adaptation des modèles WordPress à EmDash :

WordPressEmDashNotes
register_post_type()Collection dans l’UI adminCréé via le tableau de bord ou l’API
register_taxonomy()Taxonomie ou champ de tableauDépend de la complexité
register_meta()Champ dans le schéma de collectionTypé, pas clé-valeur
WP_QuerygetCollection(filters)Requêtes à l’exécution
get_post()getEntry(collection, id)Renvoie l’entrée ou null
wp_insert_post()POST /_emdash/api/content/{type}REST API
the_content<PortableText value={...} />Rendu Portable Text
add_shortcode()Bloc personnalisé Portable TextRendu de composant personnalisé
register_block_type()Bloc personnalisé Portable TextComme les shortcodes
add_menu_page()Page d’administration de pluginSous /_emdash/admin/
add_action/filter()Hooks de pluginhooks.content:beforeSave
wp_optionsctx.kvStockage clé-valeur
wp_postmetaChamps de collectionStructuré, pas clé-valeur
$wpdbctx.storageAccès direct au stockage
Categories/TagsTaxonomiesSupport hiérarchique préservé

Importation API (Avancé)

L’importation WordPress est disponible via le tableau de bord administrateur et l’API REST. Utilisez l’assistant d’importation du tableau de bord administrateur pour la meilleure expérience — il fournit le mappage des champs, la résolution des conflits et le suivi de la progression.

Les endpoints de l’API d’importation sont sous /_emdash/api/import/wordpress/ pour un accès programmatique.

Dépannage

”Erreur d’analyse XML”

Le fichier d’exportation peut être corrompu ou incomplet. Réexportez depuis WordPress.

Échecs de téléchargement des médias

Certaines images peuvent être derrière une authentification ou avoir été déplacées. L’importation continue et les URLs échouées sont enregistrées pour un traitement manuel.

Conflits de types de champs

Si une collection existante a un champ avec un type incompatible, l’assistant d’importation affiche le conflit. Soit :

  • Renommez le champ EmDash
  • Changez le mappage de champ WordPress
  • Supprimez et recréez la collection

Grandes exportations

Pour les exportations de plus de 100 Mo, envisagez :

  1. Exporter les types de publication séparément dans WordPress
  2. Importer chaque fichier séquentiellement
  3. Utiliser la CLI avec --resume pour la fiabilité

Prochaines étapes