WordPress'ten Next.js'e geçiş: adım adım rehber 2026
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.
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 Spider — Tü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 Console — En yüksek performanslı 1000 sorgunun + landing page'lerin aktarımı. Mutlaka korunması gereken URL'leri belirler.
- Wayback Machine — Tasarım ve içerik referansı için sitenin tarihsel anlık görüntüsü.
- WordPress phpMyAdmin — Custom post type, meta field, taksonomi ve yorum envanteri.
- Google Analytics 4 — Oturum 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öntem | Ne zaman kullanılır | Sınırlar |
|---|---|---|
| WP REST API (/wp-json) | Açık API'li site, teknik dev | Kimlik doğrulama, sayfalama, ayrı medya |
| WP All Export eklentisi | Yüksek hacim, özel yapı | 59-99 €, öğrenme eğrisi |
| Native WP XML aktarımı | Küçük site, standart içerik | Medya yok, katı yapı |
| Puppeteer ile scrape | Yöneticisi artık sizde olmayan site | Yavaş, 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.
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.
/** @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:
- Tüm WordPress URL'lerini listeleyin (Screaming Frog veya Google Analytics)
- 12 aylık organik trafiğe göre sıralayın (trafiğin en üst %80'ine odaklanın)
- Her eski URL'yi yeni Next.js URL'sine eşleyin
- 301'leri .htaccess (Apache) veya Next.js rewrites + Cloudflare içinde yapılandırın
- Her eşlemeyi curl -I veya Screaming Frog ile redirect-check modunda test edin
- Yeni sitemap'i yayın günü Search Console'a gönderin
- 404'leri Search Console'da 4-6 hafta izleyin, eksik yönlendirmeleri ekleyin
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şama | Süre | Eylem |
|---|---|---|
| Yayın öncesi | G-7 | Staging'de eksiksiz Next.js sitesi, SEO denetimi, Lighthouse testleri, müşteri onayı |
| WordPress snapshot'ı | G-1 | Tam WP yedeği (DB + dosyalar), 3 ay saklanır |
| DNS değişimi | G0 gece yarısı | 24 saat boyunca TTL 300s, propagasyon gözlemi |
| Sitemap gönderimi | G0+2s | Sitemap.xml GSC + Bing Webmaster Tools'a gönderildi |
| Yoğun izleme | G0 - G+7 | 404 hatalar, Search Console, GA4 trafiği, Sentry/Datadog uyarıları |
| Düzeltmeler | G+7 - G+30 | Eksik yönlendirmeler, CWV optimizasyonları |
| Nihai doğrulama | G+30 - G+60 | Tam 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):
- TTFB — WordPress 600-1500ms → Next.js static 30-80ms (10'a bölündü)
- Lighthouse Performance — WordPress 45-65 → mobile'da Next.js 95-100
- Lighthouse SEO — WordPress 85 (sıklıkla) → sistematik biçimde Next.js 100/100
- Hosting maliyetleri — Paylaşı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 trafik — CWV kazanımları sayesinde 3-6 ay içinde +%10 ila +%30 (Google sıralama sinyalleri)
Read next
2026'da Next.js vs WordPress: Belçikalı bir KOBİ için hangisi?
KOBİ'ler için dürüst Next.js vs WordPress karşılaştırması: gerçek maliyetler, performans, SEO, bakım, güvenlik, esneklik. Profilinize göre hangisini ne zaman seçmelisiniz.
Next.js static export ve Core Web Vitals: 2026 playbook
Mobilde 95+ PageSpeed'e ulaşmak için Next.js static export sitelerine uygulanan tüm optimizasyonlar: font stratejisi, CSS, LCP, INP, CLS, Framer Motion tuzakları, barındırma.
Statik bir Next.js sitesinin teknik SEO'su: 2026 eksiksiz kontrol listesi
Bir Next.js static export sitesinin SEO'da 100/100'e ulaşması için teknik olarak yapılandırılması gereken her şey: metadata, JSON-LD, sitemap, hreflang, robots, Speakable, gelişmiş şemalar.
