Canlı · durum OK
Back to blog
Geliştirme14 min

WordPress'ten Next.js'e geçiş: adım adım rehber 2026

TL;DR

WordPress sitesini Next.js'e taşımak 7 adımı izler: mevcut içerik denetimi, WP REST API veya eklenti üzerinden aktarım, Next.js mimarisi seçimi (app router + static export), UI yenileme, SEO'yu korumak için 301 kurulumu, Search Console doğrulaması, kademeli yayına alma. İyi yürütülen bir geçiş sıralamayı korur ve TTFB'yi 10'a böler. OptionWeb siteleri: hacme göre 4-8 hafta.

Julien Daniel
ByJulien Daniel
Founder & CTO, OptionWeb
Share
İçerik akışı ve yönlendirmelerle WordPress'ten Next.js'e geçiş şeması

WordPress 2026'da hâlâ dünya webinin %43'ünü çalıştırıyor; ancak sınırları hızla görünüyor: kutudan çıkar çıkmaz vasat performans (tipik TTFB 600-1500ms), geniş saldırı yüzeyi (Sucuri 2024'e göre web hack'lerinin %43'ü WordPress'i hedefliyor), eklenti bağımlılığı, güncellemelerde gizli maliyetler. OptionWeb'de eşlik ettiğimiz birçok KOBİ için artık soru 'taşınmalı mıyız?' değil 'SEO'yu kırmadan nasıl taşırız?'. İşte 30'dan fazla geçişe uygulanan eksiksiz playbook.

1. Neden geçmeli (ve ne zaman geçmemeli)

Geçiş 4 durumda anlamlıdır: iş için kritik performans (e-ticaret, agresif lead gen), zaten planlanmış büyük tasarım yenilemesi, legacy plugin hell'den çıkmak isteyen teknik ekip veya uluslararası ölçek ihtiyacı (Next.js'in yerel i18n'i WPML/Polylang'i geçer).

Şu durumlarda geçmeyin: CMS alternatifi olmayan teknik olmayan editör ekibi, < 10.000 € bütçe, yalnızca 'modern olmak' için yenileme (asıl neden görünmez), veya Next.js karşılığı olmayan 100'den fazla kritik eklentili site.

2. WordPress sitesinin ön denetimi

Denetim en çok ihmal edilen ve en kritik adımdır. Bu aşamayı atlamak = garantili SEO kaybı ve üretimde hatalar.

Tam denetim için araçlar:

  • Screaming Frog SEO SpiderTüm URL'lerin crawl'ı (500 URL'ye kadar ücretsiz, üzerinde 159 £/yıl). URL'lerin, status kodlarının, meta etiketlerin, H1'lerin, dahili linklerin CSV aktarımı.
  • Google Search ConsoleEn yüksek performanslı 1000 sorgunun + landing page'lerin aktarımı. Mutlaka korunması gereken URL'leri belirler.
  • Wayback MachineTasarım ve içerik referansı için sitenin tarihsel anlık görüntüsü.
  • WordPress phpMyAdminCustom post type, meta field, taksonomi ve yorum envanteri.
  • Google Analytics 4Oturum bazlı en iyi 50 sayfa, kullanıcı davranışı, çıkma oranı. Bu sayfalar geçişten sonra mutlaka çalışmalı.

Denetim çıktıları: tüm URL'leri içeren Excel tablosu (eski + yeni), Next.js alternatifleriyle kritik eklenti listesi, medya envanteri (toplam boyut, formatlar), dış entegrasyon listesi (ödeme, CRM, mailing, sohbet), yeni URL yapısının taslağı.

3. İçerik aktarımı

Hacim ve karmaşıklığa göre üç yöntem:

YöntemNe zaman kullanılırSınırlar
WP REST API (/wp-json)Açık API'li site, teknik devKimlik doğrulama, sayfalama, ayrı medya
WP All Export eklentisiYüksek hacim, özel yapı59-99 €, öğrenme eğrisi
Native WP XML aktarımıKüçük site, standart içerikMedya yok, katı yapı
Puppeteer ile scrapeYöneticisi artık sizde olmayan siteYavaş, kırılgan, hukuken şüpheli

OptionWeb'de WP REST API'yi (yapısal içerik) + medyayı paralel indiren bir Node.js betiğini birleştiriyoruz. Makaleler hedef mimariye göre MDX veya JSON'a dönüştürülür. 500 makale için 1-2 gün hesaplayın.

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. Hedef Next.js mimarisi

WordPress → Next.js geçişi için 2026 önerisi: App Router + static export. Avantajlar: her sunucuya deploy (Node.js gerekmez), milisaniyelik TTFB, WordPress açıklarına bağışıklık, sınırsız ölçeklenebilirlik.

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;

Önerilen klasör yapısı:

  • app/[lang]/Çok dilli rotalar, page.tsx, [slug]/page.tsx, blog/page.tsx, blog/[slug]/page.tsx
  • content/Migrate edilmiş içeriğin JSON veya MDX'i, build doğrulaması için Zod şeması ile
  • components/React bileşenleri (Gutenberg bloklarını değiştirir)
  • public/wp-content/uploads/'tan migrate edilmiş medya
  • lib/Yardımcılar (markdown'dan React'e, hreflang haritası vb.)

5. UI yenileme ve bileşenler

1 numaralı hata: WordPress temasını pixel-perfect klonlamaya çalışmak. Uzun, sıkıcı ve fırsatı kaçırıyor.

Önerilen yaklaşım: her sayfa türü için wireframe'lerden başlayın (anasayfa, hizmet sayfası, blog makalesi, iletişim vb.), Tailwind bileşenleri veya özel design system (shadcn/ui, Radix Themes) ile yeniden tasarlayın, modern animasyonlar ekleyin (Framer Motion), mobile-first'e geçin.

6. 301 yönlendirmeleri (SEO'yu korumak)

Her geçişin en kritik noktası. Önemli tek bir URL'nin yanlış yönlendirilmesi = Google sıralama kaybı. Titiz prosedür:

  1. Tüm WordPress URL'lerini listeleyin (Screaming Frog veya Google Analytics)
  2. 12 aylık organik trafiğe göre sıralayın (trafiğin en üst %80'ine odaklanın)
  3. Her eski URL'yi yeni Next.js URL'sine eşleyin
  4. 301'leri .htaccess (Apache) veya Next.js rewrites + Cloudflare içinde yapılandırın
  5. Her eşlemeyi curl -I veya Screaming Frog ile redirect-check modunda test edin
  6. Yeni sitemap'i yayın günü Search Console'a gönderin
  7. 404'leri Search Console'da 4-6 hafta izleyin, eksik yönlendirmeleri ekleyin
.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. Yayına alma ve doğrulama

Tipik yayına alma planı:

AşamaSüreEylem
Yayın öncesiG-7Staging'de eksiksiz Next.js sitesi, SEO denetimi, Lighthouse testleri, müşteri onayı
WordPress snapshot'ıG-1Tam WP yedeği (DB + dosyalar), 3 ay saklanır
DNS değişimiG0 gece yarısı24 saat boyunca TTL 300s, propagasyon gözlemi
Sitemap gönderimiG0+2sSitemap.xml GSC + Bing Webmaster Tools'a gönderildi
Yoğun izlemeG0 - G+7404 hatalar, Search Console, GA4 trafiği, Sentry/Datadog uyarıları
DüzeltmelerG+7 - G+30Eksik yönlendirmeler, CWV optimizasyonları
Nihai doğrulamaG+30 - G+60Tam indeksleme doğrulandı, sıralama öncesi/sonrası karşılaştırıldı

Geçiş sonrası ölçülen kazanımlar

30'dan fazla OptionWeb geçişinde gözlenen tipik metrikler (50-500 sayfalık KOBİ siteleri):

  • TTFBWordPress 600-1500ms → Next.js static 30-80ms (10'a bölündü)
  • Lighthouse PerformanceWordPress 45-65 → mobile'da Next.js 95-100
  • Lighthouse SEOWordPress 85 (sıklıkla) → sistematik biçimde Next.js 100/100
  • Hosting maliyetleriPaylaşımlı WordPress 15 €/ay → CDN'de static export 5-10 €/ay (Cloudflare Pages, Vercel free, Netlify free)
  • Güvenlik açıklarıSaldırı yüzeyi ~50'ye bölündü (WP admini yok, DB yok, PHP yürütme yok)
  • Organik trafikCWV kazanımları sayesinde 3-6 ay içinde +%10 ila +%30 (Google sıralama sinyalleri)
Tags#nextjs#wordpress#tasima#static-export#seo#performance