I get asked about headless WordPress more now than I did two years ago. That makes sense. WordPress 7.0 shipped on April 9, 2026, and it quietly changed what “headless” can mean. If you looked at this architecture a couple of years back and decided it wasn’t worth the complexity, the answer today is different.
Here’s what headless WordPress is, what actually changed in 2026, and where I’d reach for it instead of a traditional setup.
What “headless” actually means
In a traditional WordPress site, the same software manages the admin, stores the content, and renders the HTML your visitors see. The body and the head live in one box.
Headless splits that box. WordPress still manages the content: posts, pages, users, taxonomies, media, custom fields. The frontend, the part your visitors load, is a separate application built with something like Next.js, Astro, or Nuxt. The frontend talks to WordPress through an API (REST or GraphQL) and renders the result however it wants.
The content team still works inside the familiar WordPress editor. The frontend team gets to build with modern tooling, ship to the edge, and not worry about theme PHP.
What changed in 2026
This is the new part. WordPress 7.0 introduced three things that matter for anyone thinking about a decoupled setup.
The Abilities API
Capabilities in WordPress used to be tied to user roles (edit_posts, manage_options, and so on). That worked fine for humans clicking around wp-admin. It was awkward for external apps, especially when a frontend or an AI agent needed access to exactly one specific action and nothing else.
The Abilities API (stabilized in 7.0, first shipped in 6.9) replaces that model with a discoverable, machine-readable registry of capabilities. Plugins and core expose abilities like create-draft, generate-excerpt, or resize-media. External clients can list them, inspect their input and output schemas, and call them. Each ability carries its own permission check.
For a headless site, this means your frontend or a partner service can be handed exactly one ability, not a full editor role. If you’ve ever minted a JWT with edit_posts just to let an external script publish a draft, you already know why this is a meaningful shift.
The Connectors API
The Connectors API is a new framework that centralizes external service connections inside WordPress. Instead of every plugin building its own settings page for API keys, providers register a connector and the admin manages credentials in one place under Settings > Connectors.
Day one it ships with AI providers (OpenAI, Anthropic, Google), but the pattern applies to anything needing credentials: analytics, payment processors, search, mail.
For a headless stack, this matters because your WordPress backend can act as the single source of truth for integrations. Your Next.js app doesn’t need to ship secret keys for five different services. It calls WordPress, and WordPress calls the connector securely on its behalf.
The AI Client
Connectors store the keys. The AI Client actually uses them. wp_ai_client_prompt() is a provider-agnostic PHP API that any plugin can call to run a prompt against whatever model the site admin picked.
You write your feature once. The admin decides whether it routes to GPT-5, Claude, or Gemini. If they switch providers later, your plugin keeps working.
Combined with the Abilities API, this opens up something practical. An external agent can discover the abilities a WordPress site exposes, call them, and the site itself decides how to execute each one, including reaching out to an LLM through the connector. That’s exactly what the Model Context Protocol is designed for, and there’s an official MCP adapter for WordPress that turns a site into a real MCP server.
What this changes for headless
Four things are meaningfully better than they were in 2023.
Cleaner auth. You give the frontend a token scoped to specific abilities instead of a user with broad role permissions. A leaked token is a smaller blast radius. Rotation is less scary.
Less plumbing. If you need AI features on the frontend (summaries, alt text, translations, semantic search), you don’t write a custom endpoint, sign your own keys, and hope. You register an ability, the frontend calls it, WordPress routes to the configured provider.
Better performance out of the box. REST responses support conditional GET (ETag, If-None-Match) and gzip by default in core, so CDNs and frontends cache them properly without custom headers. WPGraphQL 2.x added persisted queries and dataloader batching, which trims a lot of the n+1 pain I used to hit with nested post-meta queries.
Honest AI integration. An agent can inspect what a site can actually do, not just what posts it has. “Write a draft about topic X and tag it for review” becomes a sequence of real API calls, not a custom integration.
Picking a frontend framework
Any frontend that can fetch an API works. In practice, most people land in one of four places.
Next.js 16 is the default for teams that want a full-stack app with SSR, API routes, server actions, and an edge runtime. Turbopack is stable and genuinely faster than Webpack now. If your team already knows React and the site has interactive parts (filters, dashboards, auth flows), Next.js is the safe pick.
Astro 6 is what I’d reach for on a content-first site. It ships zero JavaScript by default, hydrates only the islands you mark interactive, and the build is fast. Cloudflare’s acquisition of the company brought first-class workerd support, which pairs well with running a small edge function in front of a headless WordPress backend. This site runs on Astro, though the content lives in Markdown files, not a WordPress database, so it’s not strictly headless WP.
Nuxt 4 is the Vue-world equivalent of Next.js. Same general story. Pick it if your team is Vue-native.
SvelteKit 2 gives you the smallest bundle per feature. Solid choice if you’re obsessive about bytes and your team likes Svelte. Smaller ecosystem than React or Vue, but the developer experience is excellent.
None of these make or break a headless project. Fit your team, not the hype.
REST or WPGraphQL
Both work. Pick based on what you’re building.
Use the REST API when you want the path of least resistance, when you rely on plugins that only ship REST endpoints, or when your frontend needs only a handful of collections. Core has invested real effort into REST in the last few releases: conditional requests, consistent pagination, better permission introspection. It’s boring in the good sense.
Use WPGraphQL when your pages need deep, nested data in a single request. A post with its author, featured image, related posts, and three levels of custom field groups pulls a lot of REST calls. One GraphQL query replaces them. WPGraphQL 2.x is a canonical plugin now, with persisted queries and a battle-tested dataloader.
Don’t run both just because. Pick one and know it well.
When headless actually makes sense
I’m not in the camp that every WordPress site should go headless. Most shouldn’t. It adds real complexity, and traditional WordPress is an excellent setup for most cases.
Reach for headless when the frontend genuinely benefits from being a separate app. Multiple consumers of the same content: web, mobile, kiosks, TVs. A design system shared with a product app. Performance budgets that static PHP themes can’t hit. A frontend team that ships in a completely different language.
Reach for headless when the site needs to compose multiple backends. WordPress for content, Shopify for commerce, a CRM for members, an LMS for courses. A unified frontend pulling from each makes more sense than stuffing it all into one WordPress install.
Reach for headless when the content team is happy in the WordPress editor but the engineering team doesn’t want to live in theme PHP. That tension is real and common. Headless resolves it cleanly.
When it doesn’t
Skip headless if the site is a small business presence, a single blog, or a simple WooCommerce store. You’ll spend more time coordinating two codebases than you save in performance.
Skip it if the team is small and overloaded. Headless doubles the surface area. Someone has to own the frontend deploys, the preview workflow, the cache invalidation when content updates, the auth flow between the two sides.
Skip it if you depend heavily on theme-coupled plugins, page builders, or certain WooCommerce extensions that assume they render inside a WordPress theme. Many of them don’t translate cleanly through an API.
A hybrid setup covers a lot of the middle ground. Static pages generated from WordPress with traditional WP serving a /shop or /account subpath. Not everything has to be all-or-nothing.
Where I’d start
Spin up WordPress on a host you like (Kinsta, WP Engine, Cloudways, or a VPS if that’s your thing). Install WPGraphQL or rely on REST. Build a small Astro or Next.js frontend that fetches three or four posts. Deploy it to Vercel, Netlify, or Cloudflare Pages. That loop tells you everything you need to know about whether this architecture fits your project.
Do it before you commit a client. Do it before you rebuild a production site. An afternoon of exploration saves a month of “this is harder than we thought”.
Headless WordPress in 2026 is genuinely better than it was two years ago. The AI and abilities work in 7.0 isn’t a gimmick. It’s infrastructure that makes the whole pattern more practical. But it’s still a tool, not a religion. Pick it when it helps, skip it when it doesn’t.
Join the Conversation
Have thoughts, questions, or a different take? I'd love to hear from you.
Powered by Giscus · Sign in with GitHub to comment. · Privacy policy