// Cum tragi produsele static în Next.js (App Router) cu revalidare la o oră
export async function getProducts() {
const res = await fetch(process.env.WORDPRESS_API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
next: { revalidate: 3600 },
body: JSON.stringify({
query: `
query GetProducts {
products(first: 10) {
nodes {
id
name
slug
... on SimpleProduct {
price
}
}
}
}
`,
}),
});
const { data } = await res.json();
return data?.products?.nodes || [];
}De vreo doi ani încoace, toată lumea vrea headless WordPress cu Next.js, mai ales pe e-commerce. Am fost și eu în febra asta, am spart capul cu vreo trei proiecte mari și mi-am luat destule palme de la realitate. Hai să vedem unde e pragul ăla real unde merită să te complici și când e mai bine să rămâi pe clasicul PHP.
Când am dat cu capul de pragul de sus (Povestea de la 120k vizitatori)
Am avut un magazin pe WooCommerce, nișat pe fashion, care a crescut de la 10k la peste 120k de sesiuni pe lună. Pe tema lor veche de PHP (un monstru customizat, dar tot PHP), serverul de 80 de euro pe lună de la Hetzner pur și simplu plângea la fiecare campanie de tip Black Friday. Când aveam 150 de oameni simultan în checkout, baza de date și PHP-FPM-ul o luau razna.
Am decis să rescriem frontend-ul în Next.js, folosind WPGraphQL și WooCommerce GraphQL. Rezultatul? Serverul PHP a început să respire. Load-ul pe CPU a scăzut cu aproape 65% pentru că paginile de produs și categoriile erau complet statice (SSG cu ISR). Practic, WordPress-ul mai primea request-uri doar pe partea de adăugare în coș și checkout.
Trade-off-ul dureros de care nu-ți zice nimeni pe YouTube
Sună idilic, dar hai să fim sinceri: headless cu WooCommerce e un iad pe partea de mentenanță.
În primul rând, pierzi instantaneu 90% din plugin-urile de marketing. Vrei un plugin care îți pune un badge de reducere pe poză? Trebuie să scrii tu logica în React. Vrei pixelul de Facebook sau GA4? Nu mai merge cu un simplu click în admin, trebuie să trimiți evenimentele manual din Next.js.
Apoi, checkout-ul. Să faci un checkout custom, securizat, cu procesatori de plată românești (Netopia, PayU) prin API-ul de WooCommerce e o aventură în sine. Am pierdut două săptămâni doar ca să mapăm corect webhook-urile și erorile de plată.
Breakpoint-ul real. Când faci pasul?
Din experiența mea, ecuația e destul de simplă și ține de cifre:
- Sub 50.000 de vizite pe lună: Rămâi pe PHP. Pune un Redis bun, un Cloudflare în față, optimizează interogările DB și ești safe. Costul de dezvoltare pentru headless nu se justifică deloc la nivelul ăsta.
- Peste 100.000 de vizite pe lună + spike-uri masive: Aici Next.js începe să strălucească. Câștigi viteză brută (care îți crește conversia cu 10-15% pe mobil) și scapi de coșmarul serverelor blocate când dă un influencer swipe-up.
Next.js câștigă când ai trafic masiv și buget serios de mentenanță, PHP câștigă în 90% din restul cazurilor. Atât.