airesvsg/acf-to-rest-api
airesvsg/acf-to-rest-api has 1,358 GitHub stars and 120 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-10 19:05 UTC. Last push 2024-12-31.
Exposes Advanced Custom Fields Endpoints in the WordPress REST API
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalACF to REST API
Exposes Advanced Custom Fields Endpoints in the WordPress REST API
https://wordpress.org/plugins/acf-to-rest-api/
- Installation
- Endpoints
- Filters
- Deprecated Filters 🆕
- Request API Version 🆕
- Field Settings 🆕
- Editing the Fields
- Examples
- Get ACF Fields Recursively 🆕
- Cache
Installation
- Copy the
acf-to-rest-apifolder into yourwp-content/pluginsfolder - Activate the
ACF to REST APIplugin via the plugin admin page
Endpoints
| Endpoint | READABLE | EDITABLE |
|---|---|---|
| /wp-json/acf/v3/posts 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/posts/{id} | ✅ | ✅ |
| /wp-json/acf/v3/posts/{id}/{field-name} | ✅ | ✅ |
| /wp-json/acf/v3/pages 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/pages/{id} | ✅ | ✅ |
| /wp-json/acf/v3/pages/{id}/{field-name} | ✅ | ✅ |
| /wp-json/acf/v3/users 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/users/{id} | ✅ | ✅ |
| /wp-json/acf/v3/users/{id}/{field-name} | ✅ | ✅ |
| /wp-json/acf/v3/{taxonomy} 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/{taxonomy}/{id} 🆕 | ✅ | ✅ |
| /wp-json/acf/v3/{taxonomy}/{id}/{field-name} 🆕 | ✅ | ✅ |
| /wp-json/acf/v3/comments 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/comments/{id} | ✅ | ✅ |
| /wp-json/acf/v3/comments/{id}/{field-name} | ✅ | ✅ |
| /wp-json/acf/v3/media 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/media/{id} | ✅ | ✅ |
| /wp-json/acf/v3/media/{id}/{field-name} | ✅ | ✅ |
| /wp-json/acf/v3/{post-type} 🆕 | ✅ | ❌ |
| /wp-json/acf/v3/{post-type}/{id} 🆕 | ✅ | ✅ |
| /wp-json/acf/v3/{post-type}/{id}/{field-name} 🆕 | ✅ | ✅ |
| /wp-json/acf/v3/options/{id} 🆕 | ✅ | ✅ |
| /wp-json/acf/v3/options/{id}/{field-name} 🆕 | ✅ | ✅ |
Filters
| Filter | Argument(s) |
|---|---|
| acf/rest_api/id | mixed ( string, integer, boolean ) $id string $type 🆕 string $controller 🆕 |
| acf/rest_api/key | string $key WP_REST_Request $request string $type |
| acf/rest_api/item_permissions/get | boolean $permission WP_REST_Request $request string $type |
| acf/rest_api/item_permissions/update | boolean $permission WP_REST_Request $request string $type |
| acf/rest_api/{type}/prepare_item | mixed ( array, boolean ) $item WP_REST_Request $request |
| acf/rest_api/{type}/get_fields | mixed ( array, WP_REST_Request ) $data mixed ( WP_REST_Request, NULL ) $request |
| acf/rest_api/field_settings/show_in_rest 🆕 | boolean $show |
| acf/rest_api/field_settings/edit_in_rest 🆕 | boolean $edit |
Basic example of how to use the filters, in this case I will set a new permission to get the fields
add_filter( 'acf/rest_api/item_permissions/get', function( $permission ) {
return current_user_can( 'edit_posts' );
} );
Deprecated filters
| Filter | Argument(s) |
|---|---|
| acf/rest_api/type | string $type |
| acf/rest_api/types | array $types |
| acf/rest_api/default_rest_base | boolean $default string $type |
Request API version
See below how to select the Request API Version.
- Open the plugins page;
- Click the settings link under the pluing name (
ACF to REST API); - Select your version in the
ACF to REST APIsession; - Click in the button Save changes.
The other alternative is to define the constant ACF_TO_REST_API_REQUEST_VERSION in your wp-config.php
define( 'ACF_TO_REST_API_REQUEST_VERSION', 2 );
Field Settings
In this version is possible to configure the field options via admin.
The options are enabled using the filters below, by default theses options are disabled.
// Enable the option show in rest
add_filter( 'acf/rest_api/field_settings/show_in_rest', '__return_true' );
// Enable the option edit in rest
add_filter( 'acf/rest_api/field_settings/edit_in_rest', '__return_true' );
Editing the fields
The fields should be sent into the key fields.
Action: http://localhost/wp-json/acf/v3/posts/1
<form action="http://localhost/wp-json/acf/v3/posts/1" method="POST">
<?php
// https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
wp_nonce_field( 'wp_rest' );
?>
<label>Site: <input type="text" name="fields[site]"></label>
<button type="submit">Save</button>
</form>
Action: http://localhost/wp-json/wp/v2/posts/1
<form action="http://localhost/wp-json/wp/v2/posts/1" method="POST">
<?php
// https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
wp_nonce_field( 'wp_rest' );
?>
<label>Title: <input type="text" name="title"></label>
<h3>ACF</h3>
<label>Site: <input type="text" name="fields[site]"></label>
<button type="submit">Save</button>
</form>
Use the filter acf/rest_api/key to change the key fields.
add_filter( 'acf/rest_api/key', function( $key, $request, $type ) {
return 'acf_fields';
}, 10, 3 );
Now, the fields should be sent into the key acf_fields
<form action="http://localhost/wp-json/acf/v3/posts/1" method="POST">
<?php
// https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
wp_nonce_field( 'wp_rest' );
?>
<label>Site: <input type="text" name="acf_fields[site]"></label>
<button type="submit">Save</button>
</form>
Examples
Sample theme to edit the ACF Fields.
https://github.com/airesvsg/acf-to-rest-api-example
To-do list 🆕
https://github.com/airesvsg/to-do-list-acf-to-rest-api
Get ACF Fields Recursively🆕
https://github.com/airesvsg/acf-to-rest-api-recursive
More details:
Issues
Pull Request
Cache
Enable caching for WordPress REST API and increase speed of your application.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,815 starspublic-apis/public-apis
A collective list of free APIs
498,177 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
452,269 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,352 stars