Aller au contenu

Migrer de WordPress vers EmDash

EmDash offre une solution de migration complète depuis WordPress. Importez vos articles, pages, médias et taxonomies via le tableau de bord d’administration — aucune CLI requise.

Si vous souhaitez d’abord un aperçu général de la migration, lisez De WordPress à Astro avec EmDash et EmDash vs WordPress.

Exportez votre contenu

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

Sauvegardez votre site

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

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

MéthodeIdéale pourInclut les brouillonsAuthentification requise
Import de fichier WXRMigrations complètesOuiNon
WordPress.comSites hébergés sur WordPress.comOuiOAuth
API REST (sonde)Vérification du contenu avant exportNonOptionnelle

L’import 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.

  1. Exportez depuis WordPress

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

  2. Ouvrez l’assistant d’import

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

  3. Téléversez votre fichier d’export

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

  4. Vérifiez le contenu détecté

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

    Trouvé dans l'export :
    ├── Articles : 127 → posts [Nouvelle collection]
    ├── Pages : 12 → pages [Ajouter des champs]
    └── Médias : 89 pièces jointes
  5. Configurez les correspondances

    Activez/désactivez les types de publication à importer. EmDash effectue automatiquement :

    • La création de nouvelles collections pour les types de publication non mappés
    • L’ajout de champs manquants aux collections existantes
    • L’alerte en cas de conflits de type de champ
  6. Exécutez l’importation

    Cliquez sur Importer le contenu. La progression s’affiche au fur et à mesure du traitement de chaque élément.

  7. Importez les médias (optionnel)

    Après l’import du contenu, choisissez de télécharger ou non les fichiers multimédias. EmDash :

    • Les télécharge depuis vos URLs WordPress
    • Déduplique par empreinte de contenu
    • Réécrit automatiquement les URLs dans votre contenu

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

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

Les blocs inconnus sont stockés sous forme de htmlBlock avec le HTML original et les métadonnées du bloc. Vous pouvez les examiner et les convertir manuellement ou créer des composants Portable Text personnalisés pour les afficher.

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.

Statut WordPressStatut EmDash
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

Les catégories et étiquettes sont importées en tant que taxonomies avec la hiérarchie conservée :

WordPress : EmDash :
├── Catégories (hiérarchiques) ├── table `taxonomies`
│ ├── Actualités │ ├── category/news
│ │ ├── Local │ ├── category/local (parent: news)
│ │ └── Monde │ ├── category/world (parent: news)
│ └── Sport │ └── category/sports
└── Étiquettes (plates) └── table de jointure `content_taxonomies`
├── à-la-une ├── tag/featured
└── urgent └── tag/breaking

Les métadonnées de publication WordPress et les champs ACF sont analysés lors de l’import :

  1. Phase d’analyse

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

    Champs personnalisés :
    ├── subtitle (string, 45 articles)
    ├── _yoast_wpseo_title → seo.title (string, 127 articles)
    ├── _thumbnail_id → featuredImage (reference, 89 articles)
    └── price (number, 23 articles)
  2. Correspondance des champs

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

  3. Inférence de type

    EmDash déduit les types de champ à 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

Après l’import, EmDash génère une carte de redirections :

{
"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 à :

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

Utilisez ce tableau pour adapter les modèles WordPress à EmDash :

WordPressEmDashNotes
register_post_type()Collection dans l’interface 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 en temps réel
get_post()getEntry(collection, id)Retourne une entrée ou null
wp_insert_post()POST /_emdash/api/content/{type}API REST
the_content<PortableText value={...} />Rendu Portable Text
add_shortcode()Bloc personnalisé Portable TextRendu de composant personnalisé
register_block_type()Bloc personnalisé Portable TextIdentique aux shortcodes
add_menu_page()Page d’administration du pluginSous /_emdash/admin/
add_action/filter()Crochets de pluginhooks.content:beforeSave
wp_optionsctx.kvStockage clé-valeur
wp_postmetaChamps de collectionStructuré, pas clé-valeur
$wpdbctx.storageAccès direct au stockage
Catégories/ÉtiquettesTaxonomiesPrise en charge hiérarchique préservée

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

Les points de terminaison de l’API d’importation se trouvent sous /_emdash/api/import/wordpress/ pour un accès programmatique.

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

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

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

  • Renommez le champ EmDash
  • Modifiez le mappage du champ WordPress
  • Supprimez et recréez la collection

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é