Live · status OK
Back to blog
Ontwikkeling14 min

Migreren van WordPress naar Next.js: stappenplan 2026

TL;DR

Een WordPress-site naar Next.js migreren volgt 7 stappen: audit van bestaande content, export via WP REST API of plugin, keuze van Next.js-architectuur (app router + static export), redesign, 301's instellen om SEO te bewaren, validatie via Search Console, gefaseerde uitrol. Een goed uitgevoerde migratie behoudt de ranking en deelt de TTFB door 10. OptionWeb-sites: 4-8 weken afhankelijk van het volume.

Julien Daniel
ByJulien Daniel
Founder & CTO, OptionWeb
Share
Migratiediagram WordPress naar Next.js met contentstroom en redirects

WordPress draait in 2026 nog 43% van het web, maar de grenzen tonen zich snel: matige out-of-the-box prestaties (TTFB 600-1500ms), groot aanvalsoppervlak (43% van de webhacks volgens Sucuri 2024 viseren WordPress), plugin-afhankelijkheid, verborgen kosten in updates. Voor veel KMO's die we bij OptionWeb begeleiden is de vraag niet meer 'moeten we migreren?' maar 'hoe migreren zonder de SEO te breken?'. Dit is het volledige draaiboek toegepast op 30+ migraties.

1. Waarom migreren (en wanneer niet)

Migreren heeft zin in 4 gevallen: business-kritieke prestaties (e-commerce, agressieve lead gen), toch al geplande grote redesign, technisch team dat uit de legacy plugin hell wil, of internationale schaalbaarheid (native i18n in Next.js verslaat WPML/Polylang).

Niet migreren als: niet-technisch redactieteam zonder CMS-alternatief, budget < €10.000, redesign gewoon om 'modern te zijn' (echte reden onzichtbaar), of site met >100 kritieke plugins zonder Next.js-equivalent.

2. Voorafgaande audit van de WordPress-site

De audit is de meest verwaarloosde en meest kritieke stap. Deze fase overslaan = gegarandeerd SEO-verlies en bugs in productie.

Tools voor een volledige audit:

  • Screaming Frog SEO SpiderCrawl van alle URL's (gratis tot 500 URL's, £159/jaar daarboven). CSV-export van URL's, statuscodes, meta tags, H1, interne links.
  • Google Search ConsoleExport van de 1000 best presterende queries + landingspagina's. Identificeert URL's die absoluut behouden moeten blijven.
  • Wayback MachineHistorische snapshot voor referentie van design en content.
  • WordPress phpMyAdminInventaris van custom post types, meta fields, taxonomieën, comments.
  • Google Analytics 4Top 50 pagina's per sessie, gebruikersgedrag, bounce rate. Deze pagina's moeten absoluut werken na migratie.

Audit-deliverables: Excel-tabel met alle URL's (oud + nieuw), lijst van kritieke plugins met Next.js-alternatieven, media-inventaris (totaalgrootte, formaten), lijst van externe integraties (betaling, CRM, mailing, chat), schets van de nieuwe URL-structuur.

3. Content exporteren

Drie methoden afhankelijk van volume en complexiteit:

MethodeWanneer gebruikenBeperkingen
WP REST API (/wp-json)Site met open API, technische devAuthenticatie, paginatie, media apart
Plugin WP All ExportGroot volume, custom structuur€59-99, leercurve
Native WP XML-exportKleine site, standaardcontentGeen media, starre structuur
Scrape via PuppeteerSite waarvan je geen admin meer hebtTraag, fragiel, juridisch grijs

Bij OptionWeb combineren we WP REST API (gestructureerde content) + een Node.js-script dat media parallel downloadt. Artikelen worden naar MDX of JSON omgezet volgens doelarchitectuur. Reken 1-2 dagen voor 500 artikelen.

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. Doelarchitectuur Next.js

Aanbeveling 2026 voor een migratie WordPress → Next.js: App Router + static export. Voordelen: deploy op elke server (geen Node.js nodig), TTFB in milliseconden, immuun voor WordPress-lekken, oneindige schaalbaarheid.

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;

Aanbevolen mappenstructuur:

  • app/[lang]/Meertalige routes, page.tsx, [slug]/page.tsx, blog/page.tsx, blog/[slug]/page.tsx
  • content/JSON of MDX van gemigreerde content, met Zod-schema voor build-validatie
  • components/React-componenten (vervangen Gutenberg-blokken)
  • public/Media gemigreerd uit wp-content/uploads/
  • lib/Utilities (markdown naar React, hreflang-map enz.)

5. UI-redesign en componenten

Fout #1: het WordPress-thema pixel-perfect proberen klonen. Lang, saai, en je mist de kans.

Aanbevolen aanpak: vertrek van wireframes per paginatype (homepage, dienstpagina, blogartikel, contact enz.), herontwerp met Tailwind-componenten of eigen design system (shadcn/ui, Radix Themes), voeg moderne animaties toe (Framer Motion), ga mobile-first.

6. 301-redirects (SEO behouden)

Het meest kritieke punt van elke migratie. Eén belangrijke URL fout omgeleid = verloren Google-posities. Strikte procedure:

  1. Lijst alle WordPress-URL's op (Screaming Frog of Google Analytics)
  2. Sorteer op organisch verkeer over 12 maanden (focus op top 80% van het verkeer)
  3. Map elke oude URL naar de nieuwe Next.js-URL
  4. Configureer 301's in .htaccess (Apache) of Next.js rewrites + Cloudflare
  5. Test elke mapping met curl -I of Screaming Frog in redirect-check-modus
  6. Dien de nieuwe sitemap in bij Search Console op de dag van de uitrol
  7. Monitor 404's in Search Console gedurende 4-6 weken en voeg ontbrekende redirects toe
.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. Deployment en validatie

Typisch deployment-plan:

FaseDuurActie
Pre-deploymentD-7Volledige Next.js-site in staging, SEO-audit, Lighthouse-tests, klantvalidatie
WordPress-snapshotD-1Volledige WP-backup (DB + bestanden), 3 maanden bewaard
DNS-switchD0 middernachtTTL 300s gedurende 24u, propagatie observeren
Sitemap indienenD0+2uSitemap.xml ingediend bij GSC + Bing Webmaster Tools
Intensieve monitoringD0 tot D+7404-fouten, Search Console, GA4-verkeer, Sentry/Datadog-alerts
BijsturingD+7 tot D+30Ontbrekende redirects, CWV-optimalisaties
EindvalidatieD+30 tot D+60Volledige indexering geverifieerd, ranking pre/post vergeleken

Gemeten winst na migratie

Typische cijfers over 30+ OptionWeb-migraties (KMO-sites, 50-500 pagina's):

  • TTFBWordPress 600-1500ms → Next.js static 30-80ms (gedeeld door 10)
  • Lighthouse PerformanceWordPress 45-65 → Next.js 95-100 op mobiel
  • Lighthouse SEOWordPress 85 (vaak) → Next.js systematisch 100/100
  • HostingkostenGedeelde WordPress €15/maand → static export op CDN €5-10/maand (Cloudflare Pages, Vercel free, Netlify free)
  • VeiligheidslekkenAanvalsoppervlak gedeeld door ~50 (geen WP-admin, geen DB, geen PHP-uitvoering)
  • Organisch verkeer+10 tot +30% over 3-6 maanden dankzij CWV-winst (Google ranking-signalen)
Tags#nextjs#wordpress#migratie#static-export#seo#performance