![WordPress Headless CMS: Utviklerguiden [2026]](/_next/image?url=https%3A%2F%2Fmedia.techsy.io%2Ftechsy-io%2Fhero-220-1200x630.webp&w=3840&q=75)
WordPress driver 43 % av alle nettsteder ifølge W3Techs, og stadig flere team river ut PHP-frontendet helt og bruker det som en innholds-API. Her er alt du trenger å vite om å kjøre WordPress headless -- fra valget mellom REST API og WPGraphQL til å deploye et Next.js-frontend på Vercel med ISR.
Hva er headless WordPress? (Og hvorfor bør du bry deg?)
Headless WordPress er et oppsett der WordPress håndterer innholdsadministrasjon og lagring, mens en separat frontendapplikasjon -- bygget med Next.js, Nuxt, Astro eller et annet rammeverk -- henter innholdet gjennom en API. WordPress beholder admin-dashbordet, editoren, plugin-økosystemet og MySQL-databasen. Men i stedet for å rendre sider med PHP-temaer eksponerer det innhold via WordPress REST API eller WPGraphQL, og frontendet ditt tar over presentasjonslaget helt.
Tenk deg det slik: WordPress er kjøkkenet, og frontend-rammeverket ditt er restauranten. Kjøkkenet lager maten (innholdet), men restauranten bestemmer hvordan den anrettes, hvordan spiserommet ser ut, og hvordan gjestene opplever måltidet.
Tradisjonell vs headless-arkitektur
I tradisjonell WordPress er alt en monolit. En besøkende ber om en side, PHP behandler forespørselen, spør MySQL, kjører det gjennom temaets malfiler og sender tilbake rendret HTML. Temaet kontrollerer oppsett, styling, ruting -- alt.
I headless WordPress river du bort hele dette renderingslaget. WordPress sitter bak en API, gjerne på managed hosting som WP Engine eller Kinsta. Frontendet ditt -- en React-, Vue- eller Svelte-app -- sender API-forespørsler for å hente innhold og rendrer det akkurat slik du vil. De to systemene kan leve på helt forskjellige servere, ulike teknologistabber og separate deployment-pipelines.
Det er en subtilitet her som 9 av 10 guider hopper over: decoupled og headless er ikke nøyaktig det samme. Decoupled WordPress kan fortsatt falle tilbake til PHP-rendering for visse sider (som admin-området eller legacy-ruter). Fullt headless betyr at WordPress-frontendet er fullstendig deaktivert -- kun API, ingen tema-rendering overhodet. I denne guiden snakker vi om den fullt headless-tilnærmingen.
Når du bør gå headless (og når du bør holde deg tradisjonell)
Headless gir mening når teamet ditt har frontend-utviklere som vil jobbe med moderne verktøy, når du trenger å levere innhold på tvers av flere kanaler (nett, mobilapp, digitale skjermer), eller når ytelse er et absolutt krav. Det passer ikke for alle, og å være ærlig om det kan spare deg for uker med bortkastet innsats.
Gå headless når...
- Teamet ditt kan allerede React/Vue/Svelte. Hvis frontend-devene dine skriver JSX hele dagen, er det som å be en kokk lage mat i mikrobølgeovn å tvinge dem inn i PHP-temaer.
- Du trenger flerkanalslevering. Ett WordPress-backend kan mate markedsføringssiden, mobilappen og kiosken i butikken gjennom samme API.
- Ytelse er et hardt krav. Statiske sider servert fra en CDN-edge vil alltid slå PHP-rendering på delt hosting.
- Du kjører headless WooCommerce. Komplekse e-handels-frontender har enorm nytte av skreddersydde React/Next.js-butikkfronter.
- Du vil ha moderne DX. Hot module replacement, TypeScript, komponentbiblioteker, CI/CD -- hele frontend-verktøykjeden.
Hold deg tradisjonell når...
- Innholdsredaktørene trenger live-forhåndsvisning og sidebyggere. Gutenberg, Elementor og WPBakery forutsetter et tradisjonelt tema. Å gå headless ødelegger de fleste visuelle redigeringsarbeidsflytene.
- Du er en soloutvikler eller et lite team. Headless legger til 40-60 % mer kompleksitet i oppsettet. Hvis det bare er deg som vedlikeholder en blogg, er et tradisjonelt tema enklere.
- Du er sterkt avhengig av frontend-plugins. Kontaktskjemaer, SEO-plugins (Yoast renderer meta-tagger på serversiden), cookie-samtykkebannere -- alle disse forutsetter PHP-rendering.
- Budsjettet er stramt. Du trenger separat hosting for WordPress og frontendet. Det er to regninger i stedet for én.
| Scenario | Gå headless? | Hvorfor |
|---|---|---|
| Markedsføringsside med 3 frontend-devs | Ja | Teamet får moderne DX, bedre ytelse |
| Personlig blogg, solo-vedlikeholder | Nei | Overhead er ikke verdt det |
| Multi-brand innholdshub | Ja | Én backend, mange frontender |
| Plugin-tung side (skjemaer, SEO, sidebygger) | Nei | De fleste plugins trenger PHP-rendering |
| WooCommerce-butikk med tilpasset UI | Ja | React-butikkfronter overgår temabaserte |
| Innholdsredaktører som trenger live-forhåndsvisning | Nei | Headless ødelegger visuell redigering |
REST API vs WPGraphQL: Velg datalaget ditt
WordPress gir deg to måter å hente innhold på i et headless-oppsett: det innebygde REST API og WPGraphQL-pluginen. REST API leveres med WordPress core og fungerer rett ut av boksen -- ingen plugins nødvendig. WPGraphQL krever installasjon av en plugin, men lar deg spørre nøyaktig de feltene du trenger, og eliminerer over-fetching-problemet som plager REST. Etter vår erfaring vinner WPGraphQL for de fleste prosjekter, men REST har én undervurdert fordel: native HTTP-caching.
WordPress REST API: Det innebygde alternativet
REST API er tilgjengelig på alle WordPress-installasjoner siden versjon 4.7 (desember 2016). Treffer du /wp-json/wp/v2/posts, får du tilbake JSON. Enkelt, godt dokumentert, og det fungerer uten noen konfigurasjon.
Ulempen? Over-fetching. Når du ber om et innlegg, returnerer WordPress alt: rendert innhold, råinnhold, utdrag, forfatter-ID, fremhevet media-ID, kategorier, tagger, meta-felter, GUID, kommentarstatus, ping-status, mal, og omtrent 15 andre felt du sannsynligvis ikke trenger. For en blogglisteside der du bare trenger titler, slugger og utdrag, overfører du 3-5 ganger mer data enn nødvendig.
// REST API: Hent 5 nylige innlegg med forfatter og kategorier
const res = await fetch(
'https://your-site.com/wp-json/wp/v2/posts?per_page=5&_embed'
);
const posts = await res.json();
// _embed-parameteren inkluderer forfatter- og kategoriobjekter
// Men inkluderer også ALLE felt på hvert innlegg -- ~8KB per innlegg
// For 5 innlegg ser du på ~40KB JSONDu kan bruke _fields-parameteren for å begrense hvilke felt som returneres (?_fields=id,title,slug,excerpt), men det hjelper ikke med innlastede ressurser, og du vil fremdeles gjøre flere forespørsler hvis du trenger relaterte data.
WPGraphQL: Spør om det du trenger
WPGraphQL er en gratis åpen kildekode-plugin av Jason Bahl (nå vedlikeholdt av WP Engine) som legger til et fullstendig GraphQL API til WordPress. Du skriver en spørring som spesifiserer nøyaktig hvilke felt du vil ha, og du får tilbake nøyaktig det -- ikke noe mer.
# WPGraphQL: Samme spørring -- 5 nylige innlegg med forfatter og kategorier
query RecentPosts {
posts(first: 5) {
nodes {
title
slug
excerpt
date
author {
node {
name
}
}
categories {
nodes {
name
slug
}
}
}
}
}
# Svar: ~2KB med presist strukturert JSON
# Ingen ekstra felt, ingen bloatSide-ved-side kodesammenligning
Her er hva responspakkene faktisk ser ut som:
| Aspekt | REST API | WPGraphQL |
|---|---|---|
| Oppsett | Innebygd, null konfigurasjon | Plugin-installasjon nødvendig |
| Spørringspresisjon | Returnerer alle felt (bruk _fields for å filtrere) | Returnerer nøyaktig forespurte felt |
| Pakkestørrelse (5 innlegg) | ~40KB med _embed | ~2KB med målrettet spørring |
| Caching | Native HTTP-caching (ETags, 304s) | Trenger persisterte spørringer eller GET-forespørsler |
| Relaterte data | Flere forespørsler eller _embed | Én spørring med nestede felt |
| Skjemaoppdagelse | REST discovery-endepunkt | GraphQL-introspeksjon + GraphiQL IDE |
| Autentisering | Application Passwords, JWT | Application Passwords, JWT |
| ACF-støtte | Innebygd (ACF eksponerer felt til REST) | Krever WPGraphQL for ACF-plugin |
Hva bør du velge?
Bruk REST når du bygger noe raskt, teamet ditt ikke kan GraphQL, eller du trenger aggressiv HTTP-caching uten ekstra verktøy.
Bruk WPGraphQL når du bygger et produksjonsfrontend med komplekse databehov, du vil ha mindre pakker, eller teamet ditt allerede bruker GraphQL andre steder.
Klar anbefaling: For et seriøst headless WordPress-prosjekt med Next.js er WPGraphQL det bedre valget. Besparelsene i pakkestørrelse, utvikleropplevelsen med GraphiQL IDE og enkeltforespørselshenting av data gjør det verdt plugin-avhengigheten.
Sett opp WordPress som headless CMS
Å sette opp WordPress som headless CMS tar seks steg: installer WordPress, legg til de riktige pluginene, konfigurer innholdsmodellen din, deaktiver frontend-temaet, sett opp autentisering og verifiser at API-en fungerer. Hele prosessen tar omtrent 30-45 minutter hvis du har gjort det før, eller et par timer første gang.
Steg 1: Start med en fersk WordPress-installasjon på managed hosting. Kinsta, WP Engine og Cloudways tilbyr alle miljøer optimalisert for WordPress. Hvis du bare eksperimenterer, fungerer en lokal installasjon med LocalWP fint også.
Steg 2: Installer de nødvendige pluginene:
| Plugin | Formål | Nødvendig? |
|---|---|---|
| WPGraphQL | GraphQL API for WordPress | Ja (hvis du bruker GraphQL) |
| Advanced Custom Fields (ACF) | Strukturerte innholdsfelter | Ja |
| WPGraphQL for ACF | Eksponerer ACF-felter via GraphQL | Ja (med WPGraphQL) |
| Custom Post Type UI | Registrer tilpassede innleggstyper via GUI | Valgfritt (kan gjøres med kode) |
| WP Headless | Deaktiverer frontend, omdirigerer til API | Valgfritt (kan gjøres manuelt) |
Steg 3: Opprett innholdsmodellen din med ACF. Definer feltgrupper som mapper til frontend-komponentene dine. En portefølje-innleggstype kan ha felt for projectUrl, techStack (repeater), clientName og projectYear.
Viktige plugins
WPGraphQL for ACF fortjener spesiell oppmerksomhet. Uten den vil ikke ACF-feltene dine vises i GraphQL-spørringer. Etter installasjon kan du spørre om tilpassede felt slik:
query PortfolioProjects {
projects(first: 10) {
nodes {
title
slug
projectFields {
projectUrl
clientName
techStack
projectYear
}
}
}
}Deaktivere WordPress-frontendet
Steg 4: Du vil ikke at besøkende skal treffe WordPress-URL-en og se et ødelagt tema. Legg til dette i temaets functions.php eller bruk en mu-plugin:
// Omdiriger alle frontend-forespørsler til API-en
add_action('template_redirect', function () {
if (!is_admin() && !wp_doing_ajax() && !defined('REST_REQUEST') && !defined('GRAPHQL_REQUEST')) {
wp_redirect('https://your-frontend-domain.com');
exit;
}
});Steg 5: Sett opp Application Passwords for autentisering. Gå til Brukere > Din profil > Application Passwords, generer et passord og bruk det til autentiserte API-forespørsler (opprette/oppdatere innhold fra eksterne verktøy).
Test API-en din
Steg 6: Åpne nettleseren og gå til https://your-site.com/graphql -- du bør se GraphiQL IDE. Prøv å spørre om innleggene dine. Hvis du bruker REST, naviger til https://your-site.com/wp-json/wp/v2/posts og verifiser at du får JSON tilbake.
Proffips: GraphiQL IDE som leveres med WPGraphQL er genuint utmerket for å utforske skjemaet ditt. Du får autofullføring, dokumentasjon og spørringshistorikk. Det er den raskeste måten å finne ut hvilke felt som er tilgjengelige og hvordan ACF-dataene dine er strukturert.
Bygge et Next.js-frontend med WPGraphQL
Den reneste måten å bygge et headless WordPress-frontend på i 2026 er med Next.js 15 sin App Router og React Server Components. Server Components henter data på serveren uten å sende JavaScript til klienten, og WPGraphQL gir deg presise spørringer -- det er en naturlig kombinasjon. Da jeg satte opp WPGraphQL med Next.js App Router for første gang, var den største fallgruven bildebehandling -- men vi kommer tilbake til det.
Prosjektoppsett og miljøvariabler
Start med et nytt Next.js-prosjekt. Vercel tilbyr også en offisiell WordPress-startermal hvis du vil ha en referansearkitektur.
npx create-next-app@latest my-wp-frontend --typescript --app
cd my-wp-frontendOpprett .env.local med WordPress-endepunktene dine:
WORDPRESS_API_URL=https://your-wordpress-site.com
NEXT_PUBLIC_WORDPRESS_GRAPHQL_ENDPOINT=https://your-wordpress-site.com/graphqlNå oppretter du et lettvekts GraphQL fetch-verktøy. Du trenger ikke Apollo eller urql for Server Components -- vanlig fetch fungerer perfekt fordi det ikke er noen klientside-tilstand å håndtere:
// lib/wordpress.ts
const API_URL = process.env.NEXT_PUBLIC_WORDPRESS_GRAPHQL_ENDPOINT!;
export async function fetchGraphQL<T>(
query: string,
variables?: Record<string, unknown>
): Promise<T> {
const res = await fetch(API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query, variables }),
next: { revalidate: 3600 }, // ISR: revalidate every hour
});
const json = await res.json();
if (json.errors) {
throw new Error(json.errors[0].message);
}
return json.data;
}For React-rammeverksalternativer, ta en titt på vår sammenligning av Next.js vs vanlig React med Vite -- det finnes gode grunner til å hoppe over rammeverket, men for headless CMS-arbeid gjør de innebygde SSR- og ISR-funksjonene Next.js til det praktiske valget. Og hvis du vurderer mellom Next.js og Remix, tar vi det opp i innlegget vårt om hvorfor vi anbefaler Next.js for de fleste prosjekter.
Hente innlegg med Server Components
Her er blogg-listesiden som en Server Component -- ingen useEffect, ingen ladetilstander, ingen klientside-hydrering:
// app/blog/page.tsx
import { fetchGraphQL } from '@/lib/wordpress';
import Link from 'next/link';
interface PostsData {
posts: {
nodes: Array<{
title: string;
slug: string;
excerpt: string;
date: string;
author: { node: { name: string } };
}>;
};
}
const POSTS_QUERY = `
query AllPosts {
posts(first: 20, where: { status: PUBLISH }) {
nodes {
title
slug
excerpt
date
author {
node {
name
}
}
}
}
}
`;
export default async function BlogPage() {
const data = await fetchGraphQL<PostsData>(POSTS_QUERY);
return (
<main>
<h1>Blog</h1>
{data.posts.nodes.map((post) => (
<article key={post.slug}>
<Link href={`/blog/${post.slug}`}>
<h2>{post.title}</h2>
</Link>
<p>{post.author.node.name} · {new Date(post.date).toLocaleDateString()}</p>
<div dangerouslySetInnerHTML={{ __html: post.excerpt }} />
</article>
))}
</main>
);
}Dynamiske innleggssider
Individuelle innleggssider bruker generateStaticParams til å pre-rendre alle innlegg ved byggetid, deretter plukker ISR opp nytt innhold:
// app/blog/[slug]/page.tsx
import { fetchGraphQL } from '@/lib/wordpress';
import { notFound } from 'next/navigation';
const POST_QUERY = `
query PostBySlug($slug: ID!) {
post(id: $slug, idType: SLUG) {
title
content
date
author {
node {
name
avatar {
url
}
}
}
categories {
nodes { name slug }
}
}
}
`;
export async function generateStaticParams() {
const data = await fetchGraphQL<{
posts: { nodes: Array<{ slug: string }> };
}>(`query { posts(first: 100) { nodes { slug } } }`);
return data.posts.nodes.map((post) => ({ slug: post.slug }));
}
export default async function PostPage({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
const data = await fetchGraphQL<{ post: any }>(POST_QUERY, {
slug,
});
if (!data.post) notFound();
return (
<article>
<h1>{data.post.title}</h1>
<div dangerouslySetInnerHTML={{ __html: data.post.content }} />
</article>
);
}Ikke glem å konfigurere next.config.ts for WordPress-bilder:
// next.config.ts
const nextConfig = {
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'your-wordpress-site.com',
pathname: '/wp-content/uploads/**',
},
],
},
};
export default nextConfig;Deploye headless WordPress til produksjon
Et produksjonsklart headless WordPress-oppsett bruker dual hosting: WordPress lever på managed WordPress-hosting (WP Engine, Kinsta eller Cloudways), mens Next.js-frontendet deployes til en edge-plattform som Vercel eller Netlify. Denne separasjonen betyr at hvert lag kan skaleres uavhengig -- WordPress håndterer innholdsredigering og API-forespørsler, mens frontendet serverer statiske og ISR-sider fra CDN-edgenoder verden over.
Hostingarkitektur
Dataflyten ser slik ut: innholdsredaktørene publiserer i WordPress admin, WordPress lagrer innhold i MySQL, Next.js-frontendet henter innhold via WPGraphQL, Vercel genererer statisk HTML ved edgen, og besøkende treffer CDN-en -- aldri WordPress direkte.
For frontend-hosting, ta en titt på vår Vercel vs Netlify-sammenligning for en grundig gjennomgang. Begge fungerer godt med headless WordPress. Hvis du vurderer containerbaserte alternativer, dekker vår sammenligning av Railway, Render og Fly.io disse alternativene også.
ISR og on-demand revalidering
Dette er det som gjør headless WordPress faktisk levedyktig i produksjon. Vi har funnet at on-demand revalidering er verdt oppsettsinnsatsen fordi uten det er du tvunget til å velge mellom gammelt innhold (lange revalideringsintervaller) og trege bygg (korte intervaller som hamrer WordPress-API-en).
ISR lar deg sette en revalidate-tid på hver side. Etter det intervallet får neste besøkende den cachede siden mens Next.js regenererer den i bakgrunnen. Men den virkelige magien er on-demand revalidering -- å utløse en rebuild i det øyeblikket innhold publiseres:
// app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache';
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const secret = request.headers.get('x-revalidation-secret');
if (secret !== process.env.REVALIDATION_SECRET) {
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 });
}
const body = await request.json();
const slug = body.post?.post_name;
if (slug) {
revalidatePath(`/blog/${slug}`);
revalidatePath('/blog'); // Revalider også listesiden
}
return NextResponse.json({ revalidated: true });
}På WordPress-siden legger du til en webhook som utløses på publish_post ved hjelp av en plugin som WP Webhooks eller et enkelt functions.php-snippet som kaller Vercel /api/revalidate-endepunktet. Nå går innhold live innen sekunder etter å ha klikket "Publiser" -- ingen fullstendige rebuilds, ingen venting. Se Next.js ISR-dokumentasjonen for flere konfigurasjonsalternativer.
Kostnadsoversikt
| Komponent | Tjeneste | Månedlig kostnad |
|---|---|---|
| WordPress-hosting | Cloudways | $14-28 |
| WordPress-hosting | WP Engine | $20-50 |
| WordPress-hosting | Kinsta | $35-65 |
| Frontend-hosting | Vercel (Hobby) | Gratis |
| Frontend-hosting | Vercel (Pro) | $20 |
| Frontend-hosting | Netlify (Pro) | $19 |
| WPGraphQL-plugin | Åpen kildekode | Gratis |
| Typisk totalt | Cloudways + Vercel Hobby | $14 |
| Produksjonstotalt | WP Engine + Vercel Pro | $40-70 |
WordPress headless vs dedikerte headless CMS
Etter å ha jobbet med både WordPress headless og dedikerte CMSer som Sanity, Contentful og Strapi, er dette min ærlige vurdering: WordPress headless er et pragmatisk valg når du har et eksisterende WordPress-nettsted eller et innholdsteam som allerede kjenner plattformen. Det er sjelden det beste valget når du starter fra bunnen av.
Der WordPress headless vinner
- Innholdsredaktørene kjenner det allerede. WordPress' admin-UI har 20 år med forbedringer. Det tar uker å lære opp et ikke-teknisk team på Sanity Studio eller Contentfuls grensesnitt.
- Plugin-økosystemet. 60 000+ plugins. Trenger du flerspråklighet? WPML. E-handel? WooCommerce. SEO-innholdsanalyse? Yoast (fungerer fremdeles i admin). Ingen dedikert CMS kan matche denne bredden.
- Rekruttering. WordPress har den største utviklertalentmassen av alle CMS. Det er dramatisk enklere å finne en WordPress-utvikler enn en Sanity- eller Payload-spesialist.
- WooCommerce. Hvis du trenger headless e-handel med WordPress-innhold, er WooCommerce + WPGraphQL en velprøvd stabel. Saleor og Medusa er alternativer, men WooCommerce har markedsandelen.
Der dedikerte CMSer vinner
- Innholdsmodellering. Sanitys GROQ, Contentfuls innholdstyper og Payloads TypeScript-skjema er designet for strukturert innhold fra grunnen av. WordPress' post/side/custom-post-type-modell føles som noe som er boltet på i ettertid.
- Sanntidssamarbeid. Sanity har Google Docs-stil sanntidsredigering. Contentful har live-samarbeid. WordPress? Du får en "Dette innlegget redigeres av noen andre"-låseskjerm.
- API-første arkitektur. WPGraphQL er utmerket, men det er fortsatt en plugin som sitter oppå en PHP-monolit. Contentfuls API og Sanitys API ble designet API-first fra dag én.
- Mediehåndtering. WordPress' mediebibliotek er funksjonelt men grunnleggende. Sanitys bildepipeline med automatiske beskjæringer, hotspots og CDN-levering er i en annen klasse. Contentful og Storyblok integrerer med Cloudinary ut av boksen.
- Utvikleropplevelse. Strapi og Payload gir deg en lokal dev-opplevelse med hot-reload på skjemaendringer. WordPress krever at du oppdaterer adminen og kjører databasemigreringer.
| Funksjon | WordPress Headless | Sanity | Contentful | Strapi | Payload |
|---|---|---|---|---|---|
| Innholdsmodellering | ACF + CPT (ettermontering) | GROQ-skjemaer (native) | Innholdstyper (native) | Samlingstyper (native) | TypeScript-konfig (native) |
| API-kvalitet | WPGraphQL-plugin | GROQ + GraphQL (innebygd) | GraphQL + REST (innebygd) | REST + GraphQL (innebygd) | REST + GraphQL (innebygd) |
| Sanntidssamarbeid | Låsebasert kun | Google Docs-stil | Live-samarbeid | Nei | Nei |
| Mediehåndtering | Grunnleggende mediebibliotek | Bildepipeline + CDN | Cloudinary-integrasjon | Opplastingsleverandør | Lokalt + S3 |
| Gratis nivå | Selvhostet (gratis) | Sjenerøst gratis nivå | Gratis (begrenset) | Selvhostet (gratis) | Selvhostet (gratis) |
| Plugin-økosystem | 60 000+ | Voksende (300+) | Markedsplass (200+) | Markedsplass (100+) | Plugins (voksende) |
| Læringskurve | Lav (redaktørene kjenner det) | Middels | Middels | Middels | Middels-høy |
Konklusjon: Hva bør du velge?
Bruk WordPress headless når: du har et eksisterende WordPress-nettsted med år med innhold, redaktørene dine nekter å lære et nytt CMS, du trenger WooCommerce, eller du trenger en spesifikk WordPress-plugin som ikke har noen ekvivalent andre steder.
Velg et dedikert headless CMS når: du starter et nytt prosjekt fra bunnen av, du trenger sanntidssamarbeid, innholdsmodellen din er kompleks og strukturert, eller teamet ditt setter pris på utvikleropplevelse over plugin-bredde.
Hos Techsy har vi bygget headless WordPress-frontender for kunder som migrerer fra tradisjonell WordPress. Vår typiske tilnærming: WPGraphQL + Next.js App Router på Vercel, med ISR for ytelse og on-demand revalidering for innholdsferskhet. Få en gratis konsultasjon ->
WordPress MCP og Abilities API: AI-fremtiden
WordPress 6.9 introduserte Abilities API, som flettes inn i WordPress 7.0 core (april 2026). Det skaper et standardisert, typet, oppdagbart grensesnitt for WordPress-funksjonalitet -- tenk på det som WordPress som eksponerer sine muligheter i et maskinlesbart format som AI-verktøy kan forstå og bruke.
WordPress MCP-adapteren kobler denne Abilities API til Model Context Protocol (MCP), den åpne standarden for å koble AI-systemer til eksterne verktøy. Hva betyr dette i praksis? AI-agenter i Claude, Cursor eller VS Code kan nå oppdage hva WordPress-nettstedet ditt kan gjøre og deretter utføre disse handlingene direkte.
Her er et praktisk scenario: Claude kan opprette et WordPress-innlegg, fylle ACF-felt med strukturerte data, tildele kategorier, sette et fremhevet bilde og utløse Vercel revaliderings-webhookен -- alt i én samtale. Ingen nettleser, inget admin-panel, ingen kopiering og liming.
Dette er tidlig fase, og MCP-adapteren er fortsatt under utvikling. Men det signaliserer noe viktig: WordPress sitter ikke bare stille mens dedikerte headless CMSer innoverer. Kombinasjonen av Abilities API + MCP kan gjøre WordPress til et av de mest AI-tilgjengelige CMSene som finnes, og utnytter det massive plugin-økosystemet på måter som nyere, mindre plattformer ikke kan matche. Les den offisielle kunngjøringen på WordPress Developer Blog for alle tekniske detaljer.
Ytelse: Headless WordPress vs tradisjonell WordPress
Headless WordPress med et statisk frontend forbedrer ytelsen dramatisk sammenlignet med tradisjonell PHP-rendret WordPress. Tradisjonell WordPress serverer dynamiske sider ved å kjøre PHP på hver forespørsel, noe som resulterer i dårlig Time to First Byte (TTFB) -- ifølge ytelsesdata fra midten av 2025 ser bare 31 % av WordPress desktop-klienter og 24 % på mobil gode TTFB-scorer. Å gå headless med Next.js og ISR betyr at sider er pre-rendret og servert fra CDN-edgenoder, noe som senker TTFB til under 100 ms for cachede sider.
WP Engines case study om Android Authority viste en 6x forbedring i Lighthouse-ytelsesscore etter migrering til headless WordPress. Core Web Vitals-data forteller en lignende historie: bare 45 % av WordPress-sider består alle tre CWV-metrikker på mobil, sammenlignet med 65 % for Shopify og 83 % for Duda.
| Metrikk | Tradisjonell WordPress | Headless WP + Next.js | Forbedring |
|---|---|---|---|
| TTFB (median) | 800-1 200 ms | 50-100 ms (CDN cached) | 8-16x raskere |
| LCP | 2,5-4,0 s | 1,0-1,8 s | 40-60 % raskere |
| CLS | 0,1-0,25 | <0,05 | Nær-null layout-skift |
| Lighthouse-ytelse | 40-65 | 90-100 | 50-150 % forbedring |
| CWV-bestått (mobil) | 45 % | 85 %+ (estimert) | ~2x flere sider som består |
En viktig forbehold: headless fikser ikke et tregt WordPress-backend. Hvis WordPress-API-en tar 3 sekunder å svare fordi du er på billig delt hosting med 40 plugins, vil ISR-regenereringen din være treg også. Frontendet kan ikke være raskere enn API-en det er avhengig av. Invester i kvalitet managed hosting -- det betyr mer i et headless-oppsett, ikke mindre. WordPress Performance Lead Weston Ruers blogg har utmerkede data om hva som faktisk gjør en forskjell for WordPress-serverytelse.
FAQ
Hva er headless WordPress?
Headless WordPress er en arkitektur der WordPress kun fungerer som et innholdsadministrasjons-backend, med sitt PHP frontend-tema fullstendig deaktivert. Innhold leveres gjennom REST API eller WPGraphQL til en separat frontendapplikasjon bygget med rammeverk som Next.js, Nuxt eller Astro. WordPress admin-dashbordet forblir fullt funksjonelt for innholdsredaktørene.
Er WordPress bra som headless CMS?
WordPress fungerer godt som headless CMS når du har et eksisterende WordPress-nettsted, innholdsredaktører som kjenner grensesnittet, eller trenger plugin-økosystemet (spesielt WooCommerce). Det er mindre ideelt enn dedikerte headless CMSer som Sanity eller Contentful når du starter fra bunnen av, fordi WordPress' innholdsmodellering og API ble ettermontering snarere enn bygget API-first.
Hva er ulempene med headless WordPress?
Hovedulempene er: økt kompleksitet (to hostingmiljøer i stedet for ett), tap av visuell redigering og sidebyggerfunksjonalitet, frontend-plugins slutter å fungere (Yoast meta-rendering, kontaktskjemaer, cookie-bannere), ingen sanntids innholdssamarbeid, og GraphQL API er en plugin-avhengighet snarere enn kjernefunksjonalitet. Budsjettet øker også siden du betaler for WordPress-hosting pluss frontend-hosting.
Hvordan kobler jeg Next.js til WordPress?
Installer WPGraphQL på WordPress-nettstedet ditt, opprett deretter et Next.js-prosjekt med App Router. Sett WordPress GraphQL-endepunktet som en miljøvariabel, skriv en enkel fetch-basert GraphQL-verktøyfunksjon og bruk den i Server Components for å spørre om innlegg, sider og tilpassede innholdstyper. Ingen Apollo eller urql nødvendig -- vanlig fetch fungerer fordi Server Components kjører på serveren.
WPGraphQL vs REST API -- hva er best?
WPGraphQL er bedre for produksjonsfrontender fordi det returnerer bare de feltene du ber om (reduserer pakkestørrelsen med 60-80 %), støtter nestede spørringer i én enkelt forespørsel og gir en GraphiQL IDE for skjemautforskning. REST API er bedre for raske prototyper, team som ikke kjenner GraphQL, eller scenarier der native HTTP-caching er kritisk uten ekstra verktøy.
Hvor mye koster headless WordPress?
Et minimalt headless WordPress-oppsett koster omtrent $14 per måned -- Cloudways for WordPress-hosting pluss Vercels gratis Hobby-nivå for frontendet. Et produksjonsoppsett med WP Engine og Vercel Pro koster $40-70 per måned. Legg til $0-50 per måned for premium-plugins som ACF Pro og WPML. Dedikerte headless CMSer har ofte sjenerøse gratis nivåer, så kostnaden alene er ikke en grunn til å velge WordPress headless.
Kan jeg bruke WooCommerce med headless WordPress?
Ja. WPGraphQL har en WooCommerce-utvidelse (WPGraphQL WooCommerce eller "WooGraphQL") som eksponerer produkter, bestillinger, handlekurv og kasse-funksjonalitet gjennom GraphQL. Dette lar deg bygge tilpassede React-butikkfronter med full e-handelsfunksjonalitet. Kasseflyten krever ekstra arbeid sammenlignet med tradisjonelle WooCommerce-temaer, men ytelses- og UX-gevinstene er betydelige for butikker med høy trafikk.
Trenger jeg en utvikler for å sette opp headless WordPress?
Ja, et headless WordPress-oppsett krever frontend-utviklingsferdigheter -- spesifikt React (eller Vue/Svelte) og kjennskap til APIer. Du må bygge hele frontendet fra bunnen av eller tilpasse en startermal. Dette er ikke en no-code-løsning. Innholdsredaktørene kan fortsatt bruke WordPress admin normalt, men den første konfigurasjonen og løpende frontend-vedlikehold krever utviklerinvolvering.
Hvilke plugins er essensielle for headless WordPress?
De essensielle pluginene er WPGraphQL (GraphQL API), Advanced Custom Fields eller ACF (strukturert innholdsmodellering) og WPGraphQL for ACF (eksponerer tilpassede felter via GraphQL). Sterkt anbefalt: Custom Post Type UI for å registrere innleggstyper gjennom adminen, og en webhook-plugin som WP Webhooks for å utløse frontend-rebuilds ved innleggspublisering. Unngå frontend-avhengige plugins som Yoast SEOs meta-rendering eller skjema-plugins.
Er headless WordPress bra for SEO?
Headless WordPress kan være utmerket for SEO når det implementeres riktig med Next.js eller Nuxt, fordi du får server-side rendering, raskere sideinnlastinger (som forbedrer Core Web Vitals) og full kontroll over meta-tagger, strukturerte data og URL-struktur. Risikoen er at du mister automatiske SEO-plugin-funksjoner som Yoasts meta-tag-rendering -- du må håndtere meta-tagger, sitemaps og strukturerte data i frontend-koden din manuelt.