Live · status OK
Retour au blog
Développement14 min

Migrer de WordPress vers Next.js : guide étape par étape 2026

TL;DR

Migrer un site WordPress vers Next.js suit 7 étapes : audit du contenu existant, export via WP REST API ou plugin, choix de l'architecture Next.js (app router + static export), refonte design, mise en place des 301 pour préserver le SEO, validation Search Console, déploiement progressif. Une migration bien menée maintient le ranking et divise le TTFB par 10. Sites OptionWeb : 4-8 semaines selon volume.

Julien Daniel
ParJulien Daniel
Founder & CTO, OptionWeb
Partager
Schéma de migration WordPress vers Next.js avec flux de contenu et redirections

WordPress propulse encore 43% du web mondial en 2026, mais ses limites apparaissent vite : performance médiocre out-of-the-box (TTFB 600-1500ms typique), surface d'attaque élevée (43% des hacks web ciblent WordPress selon Sucuri 2024), dépendance aux plugins, coûts cachés en mises à jour. Pour beaucoup de PME que nous accompagnons chez OptionWeb, la question n'est plus 'faut-il migrer ?' mais 'comment migrer sans casser le SEO ?'. Pour la décision en amont, voir notre comparatif détaillé Next.js vs WordPress en 2026. Voici le playbook complet appliqué sur 30+ migrations.

1. Pourquoi migrer (et quand ne pas le faire)

Migrer fait sens dans 4 cas : performance critique pour le business (e-commerce, lead gen agressif), refonte design majeure prévue de toute façon, équipe technique qui veut sortir du legacy plugin hell, ou besoin de scaler internationalement (i18n natif Next.js bat WPML/Polylang).

Ne pas migrer si : équipe éditoriale non-tech sans alternative CMS, budget < 10 000 €, refonte juste pour 'être moderne' (vraie raison invisible), ou site avec >100 plugins critiques qui n'ont pas d'équivalent Next.js.

2. Audit préalable du site WordPress

L'audit est l'étape la plus négligée et la plus critique. Sauter cette phase = perte garantie de SEO et bugs en production.

Outils pour l'audit complet :

  • Screaming Frog SEO SpiderCrawl de toutes les URLs (gratuit jusqu'à 500 URLs, 159 £/an au-delà). Export CSV des URLs, status codes, meta tags, H1, internal links.
  • Google Search ConsoleExport des 1000 requêtes les plus performantes + pages de destination. Identifie les URLs à préserver absolument.
  • Wayback MachineSnapshot historique du site pour références de design et contenu.
  • WordPress phpMyAdminInventaire des post types custom, meta fields, taxonomies, comments.
  • Google Analytics 4Top 50 pages par sessions, comportement utilisateur, taux de rebond. Ces pages doivent absolument fonctionner après migration.

Livrables de l'audit : tableau Excel avec toutes les URLs (anciennes + futures), liste des plugins critiques avec alternatives Next.js, inventaire des médias (taille totale, formats), liste des intégrations externes (paiement, CRM, mailing, chat), maquette de la nouvelle structure d'URLs.

3. Export du contenu

Trois méthodes selon le volume et la complexité :

MéthodeQuand utiliserLimites
WP REST API (/wp-json)Site avec API ouverte, dev techniqueAuthentification, pagination, médias séparés
Plugin WP All ExportVolume important, structure custom59-99 €, courbe d'apprentissage
Export XML natif WPPetit site, contenu standardPas de médias, structure rigide
Scrape via PuppeteerSite dont vous n'avez plus l'adminLent, fragile, légalité douteuse

Pour OptionWeb, on combine WP REST API (contenu structuré) + script Node.js de download des médias en parallèle. Les articles sont convertis en MDX ou JSON selon l'architecture cible. Compter 1-2 jours pour 500 articles.

scripts/export-wp.tsts
import fs from 'node:fs/promises';
import path from 'node:path';

const WP_API = 'https://votre-site.com/wp-json/wp/v2';

async function fetchAllPosts() {
  const allPosts = [];
  let page = 1;
  while (true) {
    const res = await fetch(`${WP_API}/posts?per_page=100&page=${page}&_embed`);
    if (!res.ok) break;
    const posts = await res.json();
    if (posts.length === 0) break;
    allPosts.push(...posts);
    page++;
  }
  return allPosts;
}

const posts = await fetchAllPosts();
await fs.writeFile('content/posts.json', JSON.stringify(posts, null, 2));

4. Architecture Next.js cible

Recommandation 2026 pour migration WordPress → Next.js : App Router + static export. Avantages : déploiement sur tout serveur (pas de Node.js requis), TTFB en quelques ms, immune aux failles WordPress, scalabilité infinie.

next.config.mjsts
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
  images: { unoptimized: true },
  trailingSlash: true,
  i18n: undefined, // gérer via app/[lang]/ pour static export
};
export default nextConfig;

Structure de dossier recommandée :

  • app/[lang]/Routes multilingues, page.tsx, [slug]/page.tsx, blog/page.tsx, blog/[slug]/page.tsx
  • content/JSON ou MDX du contenu migré, avec Zod schema pour validation au build
  • components/Composants React (replace gutenberg blocks)
  • public/Médias migrés depuis wp-content/uploads/
  • lib/Utilities (markdown to React, hreflang map, etc.)

5. Refonte UI et composants

Erreur #1 : tenter de cloner le thème WordPress pixel-perfect. C'est long, ennuyeux, et passe à côté de l'opportunité.

Approche recommandée : repartir des wireframes de chaque page type (homepage, page service, article blog, contact, etc.), redesigner avec composants Tailwind ou design system custom (shadcn/ui, Radix Themes), ajouter les animations modernes (Framer Motion), passer en mobile-first.

6. Redirections 301 (préserver le SEO)

Le point le plus critique de toute migration. Une seule URL importante mal redirigée = perte de positions Google. Procédure rigoureuse :

  1. Lister toutes les URLs WordPress (Screaming Frog ou Google Analytics)
  2. Trier par trafic organique sur 12 mois (focus sur top 80% du trafic)
  3. Mapper chaque ancienne URL vers la nouvelle URL Next.js
  4. Configurer les 301 dans .htaccess (Apache) ou rewrites Next.js + Cloudflare
  5. Tester chaque mapping avec curl -I ou Screaming Frog en mode redirect-check
  6. Soumettre le nouveau sitemap à Search Console le jour J du déploiement
  7. Monitorer les 404 dans Search Console pendant 4-6 semaines, ajouter redirections manquantes
.htaccessapache
RewriteEngine On

# Redirections 301 anciennes URLs WordPress
Redirect 301 /?p=123 /fr/article-titre-canonique/
Redirect 301 /category/seo /fr/blog/?cat=seo
Redirect 301 /author/admin /fr/equipe/

# Pattern WordPress permalinks date-based
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([^/]+)/?$ /fr/blog/$4/ [R=301,L]

7. Déploiement et validation

Plan de déploiement type :

PhaseDuréeAction
Pré-déploiementJ-7Site Next.js complet en staging, audit SEO, tests Lighthouse, validation client
Snapshot WordPressJ-1Backup complet WP (DB + files), conservé 3 mois
Bascule DNSJ0 minuitTTL 300s pendant 24h, observation propagation
Soumission sitemapJ0+2hSitemap.xml soumis à GSC + Bing Webmaster Tools
Monitoring intensifJ0 à J+7404 errors, Search Console, GA4 trafic, alertes Sentry/Datadog
AjustementsJ+7 à J+30Redirections manquantes, optimisations CWV
Validation finaleJ+30 à J+60Indexation complète vérifiée, ranking comparé pré/post

Gains mesurés après migration

Métriques typiques observées sur 30+ migrations OptionWeb (sites PME 50-500 pages) :

  • TTFBWordPress 600-1500ms → Next.js static 30-80ms (divisé par 10)
  • Lighthouse PerformanceWordPress 45-65 → Next.js 95-100 sur mobile
  • Lighthouse SEOWordPress 85 (souvent) → Next.js 100/100 systématique
  • Coûts hébergementWordPress mutualisé 15 €/mois → static export sur CDN 5-10 €/mois (Cloudflare Pages, Vercel free, Netlify free)
  • Failles sécuritéSurface d'attaque divisée par ~50 (pas d'admin WP, pas de DB, pas d'exécution PHP)
  • Trafic organique+10 à +30% sur 3-6 mois grâce aux gains CWV (signaux ranking Google). Pour optimiser les Core Web Vitals après migration, voir notre playbook CWV Next.js.
Tags#nextjs#wordpress#migration#static-export#seo#performance