Does this change or replace the built-in WordPress REST API?
No. The built-in REST API is untouched and keeps working. This plugin adds its own endpoints under /code-and-core-headless-fast-api/v1/ .
Are the responses the same as the WordPress REST API?
Individual items use the same field names and structure ( title.rendered , content.rendered , featured_media , _links , …), plus acf and yoast_head_json when those integrations are on. Lists are wrapped in an object with count , total , total_pages and data , instead of a bare array with X-WP-Total headers.
Content is returned as stored, with paragraphs added. Shortcodes and blocks are not run through the_content filters, because the theme and most plugins have not loaded yet. Render dynamic blocks on your front end, or use the core REST API for the few requests that need them.
Does it support ACF?
Yes. Turn on the ACF integration under Integrations . Fields, repeaters, groups, flexible content, images and options pages are supported, and relationship fields can be expanded with resolve rules.
Does it support Yoast SEO?
Yes. With the Yoast integration on, items include yoast_head and yoast_head_json , built from Yoast’s indexable data.
Can I add my own post meta to the response?
Yes. On the Schema screen, open the Custom Fields tab and add the meta key, its type (string, integer, boolean or JSON) and whether it holds a single value.
Why don’t my content changes show up?
If disk caching is on, responses are kept for up to an hour. Save the settings with Clear Cache on Save turned on to clear the cache at once. Also check any CDN or proxy cache in front of the site.
I get a 404 for a post type or taxonomy.
Make sure it is public and turned on under Entities , then save. The endpoint name is the post type or taxonomy name with an s added (for example product becomes products ). Categories, tags, pages and media use categories , tags , pages and media .
The API returns my theme’s HTML 404 page.
Check that permalinks are not set to “Plain”, and that the URL contains /code-and-core-headless-fast-api/v1/ .
Do I need to change my server configuration?
No. Requests reach the API through WordPress’s normal permalink handling on every server.
What if the must-use plugins folder is not writable?
Fast Mode cannot be turned on, and the plugin tells you so. The API keeps working and returns identical responses; it is answered on plugins_loaded instead, which is slower on sites with many plugins.
Will other plugins’ changes appear in Fast Mode?
Data that plugins save to the database is included. Output that plugins add at runtime through filters is not, because those plugins do not load on API requests in Fast Mode. If you need that output, leave Fast Mode off.
Can I move my configuration to another site?
Yes. Use Download Backup under Advanced on the first site, then Restore on the second.
Does it work on multisite?
Each site has its own uploads folder, so each site keeps its own configuration and cache. Fast Mode checks both site-level and network-wide activation.
How do I call the API from my front end?
Every list is in data , with totals beside it:
const API = 'https://example.com/code-and-core-headless-fast-api/v1'; const json = await fetch(API + '/posts?per_page=6&categories=3').then(r => r.json()); json.data.forEach(post => console.log(post.title.rendered));
In Next.js (App Router), add { next: { revalidate: 60 } } to fetch() to refresh the data every 60 seconds.
How do I get the best performance?
Turn on Fast Mode . It has the biggest effect on sites with many plugins. Remove fields you don’t use on the Schema screen, for example content on list endpoints that only show cards. Use resolve rules instead of requesting related posts, images or terms one at a time. Turn on disk caching , and put a CDN in front of the API. Keep per_page small and paginate with page and total_pages .
What can I configure in the admin?
The Code and Core Headless Fast API menu has five screens:
- Dashboard : every endpoint URL, with a request tester.
- Entities : the post types, taxonomies and users to expose.
- Schema : the live response builder, field exclusion, custom meta, and resolve and append rules.
- Integrations : Yoast SEO and ACF.
- Advanced : caching, Fast Mode, and import, export and reset.
Press Save & Sync Schemas to save. Saving also scans for new post types, taxonomies and ACF fields.
Is the API public? Do I need authentication?
The API is public and read-only, like the core REST API for published content. No API key or login is needed. Only the post types, taxonomies and entities you enable are served. Use field exclusion to remove anything your front end does not need.
Can I write data (create, update or delete posts) through this API?
No. The API is read-only and answers only GET requests. Use the built-in WordPress REST API for writes.
Can I use both this API and the built-in REST API at the same time?
Yes. They are completely separate. Many sites use this plugin for public, read-heavy pages and the core REST API for previews, forms and authenticated actions.
Does it work with Gutenberg blocks?
Block content is returned as saved in the database, with the block comment markup and HTML included. Static blocks display correctly. Dynamic blocks (latest posts, query loops, shortcodes) are not rendered on the server, because the theme and most plugins have not loaded yet. Render those on your front end.
Does it work with page builders such as Elementor or Divi?
Page builders usually render their output through filters at runtime, which do not run here. This plugin works best with content from the block editor, the classic editor and ACF fields. For pages made with a page builder, use the core REST API or build those sections from ACF fields.
Does it support WooCommerce products?
Products are a public post type, so products can be turned on under Entities, and the title, content, excerpt, images, terms and selected meta (for example _price or _sku through Custom Fields) are returned. Calculated WooCommerce data such as variations, tax-inclusive prices and stock status is not included. Use the WooCommerce Store API for cart and checkout.
Does it support WPML or Polylang?
There is no dedicated multilingual integration yet. Translated posts are returned like any other posts, but filtering by language is not available.
Does it support custom post types and taxonomies made with CPT UI, ACF or code?
Yes. Any public post type or taxonomy appears under Entities, however it was registered. Save once after adding a new one.
Does it return drafts, scheduled or private posts?
By default, only published posts (and attachments) are returned. Use WordPress’s own preview tools or the authenticated core REST API for draft previews.
How do I get the featured image URL?
Each post includes featured_media (the attachment ID). To get the full image object in the same response, add a media resolve rule for featured_media on the Schema screen, or request /media/{id} .
How do I get posts in a category by its slug?
First get the term ID from /categories/{slug} , then request /posts?categories={id} . You can also cache the term ID on your front end.
How do I paginate?
Use page and per_page . Every list response includes total and total_pages , so you can build pagination without reading headers.
How do I build a “previous / next post” link?
Single post responses include pagination.previous_post and pagination.next_post , each with id , title and slug , or null at either end.
How do I get the home page?
Request /home . It returns the static front page set under Settings > Reading, or the latest posts if the front page shows posts.
How do I remove fields from the response?
Open the Schema screen, choose the endpoint, press Send, then switch off fields in the response tree and press Save & Sync Schemas . Exclusions are saved separately for list and single responses.
What is the difference between “resolve rules” and “append rules”?
A resolve rule replaces an ID (or a list of IDs) already in the response with the full object, such as a related post, image, term or user. An append rule adds new data that is not in the item, such as a list of the latest posts, under a field you choose.
How long is the disk cache kept, and where?
Up to one hour, as JSON files in wp-content/uploads/code-and-core-headless-fast-api/cache/ . Each unique URL, including its query string, is cached separately.
Can I use a CDN or Varnish in front of the API?
Yes, and it is recommended. Responses are public, cookie-free GET requests with a JSON content type, which makes them easy to cache at the edge.
How do I know whether a response came from the cache?
Check the X-HeadlessFastAPI-Cache response header. It is HIT when the disk cache answered and MISS when the response was built.
Can my front end on another domain call the API?
Yes. Every response sends Access-Control-Allow-Origin: * , so browsers on any domain can call the API without a proxy.
Will Fast Mode break my site?
No. The Fast Mode file acts only on URLs that contain /code-and-core-headless-fast-api/v1/ . Every other request, including the admin, the front end and the core REST API, loads exactly as before.
Can I see the Fast Mode file in the Plugins screen?
Yes. It is listed under Plugins > Must-Use as “Code and Core Headless Fast API – Fast Mode”. Turn it off from the plugin’s Advanced screen, not by editing the file.
Does it work with security or caching plugins?
Yes. Page-caching plugins may also cache the API URLs, which is fine for public content. If a security plugin blocks unfamiliar URLs, allow the /code-and-core-headless-fast-api/v1/ path.
Does it work with object caching (Redis or Memcached)?
Yes. The plugin works with or without a persistent object cache. Its own response cache is separate and stored on disk.
Will my settings be kept when I update the plugin?
Yes. Settings are stored in the uploads folder and are not touched by updates. The Fast Mode file is rewritten for the new version automatically.
What are the server requirements?
WordPress 6.0 or later, PHP