Our next major release of Advanced Custom Fields is now widely available. ACF Version 5.11 includes some exciting developer-focused improvements.
The biggest addition in this release is support for ACF custom fields in the WordPress REST API.
Until now, ACF field values were not viewable or editable via the WP REST API without the use of custom code or another plugin. With this release, support for the WP REST API is baked right into ACF field groups with the flip of a switch. This means that ACF field values can now be accessed through existing endpoints for WordPress content objects like posts, pages, custom post types, and users.
This gives ACF-powered sites endless possibilities with the WP REST API. For example, let’s say you have a site for a car dealership that utilizes a custom post type for cars, enriched with ACF fields for make, model, engine size, color, etc. If third-party services need to access this data, you can supply the WP REST API URL which returns JSON data to be consumed by those services:
https://cranfordcars.com/wp-json/wp/v2/cars/
{
"id": 65,
"date": "2021-11-10T08:26:55",
"date_gmt": "2021-11-10T08:26:55",
"guid": {
"rendered": "https://cranfordcars.com/?post_type=cars&p=65"
},
"modified": "2021-11-10T08:26:55",
"modified_gmt": "2021-11-10T08:26:55",
"slug": "bmw-320i",
"status": "publish",
"type": "cars",
"link": "https://cranfordcars.com/cars/bmw-320i/",
"title": {
"rendered": "BMW 320i"
},
"content": {
"rendered": "<p>The <b>BMW 3 Series</b> is a line of <a title=\"Compact executive car\" href=\"https://en.wikipedia.org/wiki/Compact_executive_car\">compact executive cars</a> manufactured by the German automaker <a title=\"BMW\" href=\"https://en.wikipedia.org/wiki/BMW\">BMW</a> since May 1975. It is the successor to the <a title=\"BMW 02 Series\" href=\"https://en.wikipedia.org/wiki/BMW_02_Series\">02 Series</a> and has been produced in seven different generations.</p>\n",
"protected": false
},
"template": "",
"acf": {
"make": "BMW",
"model": "320i",
"engine_size": "2l",
"color": "White"
},
"_links": {
"self": [
{
"href": "https://cranfordcars.com/wp-json/wp/v2/cars/65"
}
],
"collection": [
{
"href": "https://cranfordcars.com/wp-json/wp/v2/cars"
}
],
"about": [
{
"href": "https://cranfordcars.com/wp-json/wp/v2/types/cars"
}
],
"wp:attachment": [
{
"href": "https://cranfordcars.com/wp-json/wp/v2/media?parent=65"
}
],
"curies": [
{
"name": "wp",
"href": "https://api.w.org/{rel}",
"templated": true
}
]
}
}
This also allows developers to build custom themes using React, Vue, or any other JavaScript library.
You can enable or disable specific field groups from being included in the REST API by toggling the “Show in REST API” option in the field group settings. The default for this setting is No, so you must toggle this to Yes if you want your field groups to show in the WP REST API.
Any custom field groups added to WordPress data like posts (including all custom post types), users, and categories (including all custom taxonomies), will be available in their respective WP REST API endpoints.
The ACF data is available when using the following request verbs on a valid WP REST API endpoint:
Due to the fact that POST requests allow you to manipulate your ACF data, you will be required to authenticate your POST requests, using one of the authentication methods available to WordPress.
You can find all the details on how the ACF integration for the WP REST API works in our WP REST API doc, including a list of available endpoints, details on how to authenticate your POST requests, and full code examples.
REST API support is available in both the ACF and ACF PRO plugins.
One common request we’ve seen from users is the ability to define the ACF PRO license key in code rather than storing it in the WordPress database. This is an option we have enabled for all our WordPress plugins, so it made sense to add it to ACF.
ACF will now look for and use a PHP constant named ACF_PRO_LICENSE
, which you can define with your license key.
define('ACF_PRO_LICENSE', 'yourkeyhere' );
This can be done in the wp-config.php
file or any other file that WordPress runs before it loads the ACF PRO plugin. For more details, check out our guide on how to activate the ACF PRO plugin.
We’re always looking at ways to improve the security and functionality of our products, and ACF is no exception. In this release we included the following improvements:
extract
function and explicitly set the intended variables..acf-block-preview
wrapper didn’t appear when previewing a block in auto mode.get_field()
could be used to retrieve values not associated with ACF data. For more details, see the get_field() documentation.
Thanks to translation contributor Dariusz Zielonka for sending us updated Polish translation strings. 🎉
If you are interested in helping improve the translation of ACF into other languages, please let me know. 🙌
The acf_shortcode
function has been updated so that ‘acf’ is passed as the $shortcode
parameter to the shortcode_atts
function. This enables an ACF specific filter, shortcode_atts_acf
which allows developers to filter shortcode attributes.
add_filter( "shortcode_atts_acf", function( $out, $pairs, $atts, $shortcode ) {
// we're in the context of an acf shortcode
}, 10, 4 );
In ACF 5.10, we moved to support version 2 of the WordPress Blocks API included in WordPress 5.6. The goal was to support more advanced functionality such as the ability to use the Block Editor’s extraProps
filter. Unfortunately, our implementation of this triggered re-rendering of ACF blocks any time a property changed, which caused issues with other block editor features such as block styles and the built-in spacing/padding support.
ACF 5.11 removes support of the extraProps
functionality to prevent these re-renders. This will improve performance and solve issues with block styles.
We want ACF blocks to function as closely as possible to core or custom-built WordPress blocks. Therefore we’re working on re-introducing support for this in an upcoming release. Doing so will change the structure of ACF blocks to include an HTML wrapper outside of your template which can handle any extra props, spacing, and custom styles.
These are just the highlights of all the features, improvements, and bug fixes bundled in this release. To see a full list of all the updates, take a look at the changelog.
While there is plenty new and improved for you in this release, we’ve also been hard at work behind the scenes. Since the last release, we’ve implemented a series of code quality and testing improvements, which will help us build better and faster going forward.
As we wrap up our latest release, let’s take a look at what we have planned for the next one:
extraProps
filter.Thanks to everyone in the ACF community who helped make this release possible. 🙌
Are you excited about ACF 5.11? What are you planning on doing with the WP REST API integration? Let us know on Twitter.
For questions and help about this release, please contact our support team.