How to expose all the ACF fields to Wordpress REST API in both pages and custom postypes How to expose all the ACF fields to Wordpress REST API in both pages and custom postypes wordpress wordpress

How to expose all the ACF fields to Wordpress REST API in both pages and custom postypes


Another simple solution that is working perfect for me now.You can add the following function on functions.php or fields.phpUsing ACF getFields before sending a rest request. You can add this to any special page rest_prepare_page or rest_prepare_post.

The ACF data will be in the json response with key acf

// add this to functions.php//register acf fields to Wordpress API//https://support.advancedcustomfields.com/forums/topic/json-rest-api-and-acf/function acf_to_rest_api($response, $post, $request) {    if (!function_exists('get_fields')) return $response;    if (isset($post)) {        $acf = get_fields($post->id);        $response->data['acf'] = $acf;    }    return $response;}add_filter('rest_prepare_post', 'acf_to_rest_api', 10, 3);


Through the following code, you will be able to expose page and your custom postypes ACF fields in the wordpress REST API and access them inside the ACF object.

You can obviously customise the postypes to exclude or to include in the arrays: $postypes_to_exclude and $extra_postypes_to_include.

function create_ACF_meta_in_REST() {    $postypes_to_exclude = ['acf-field-group','acf-field'];    $extra_postypes_to_include = ["page"];    $post_types = array_diff(get_post_types(["_builtin" => false], 'names'),$postypes_to_exclude);    array_push($post_types, $extra_postypes_to_include);    foreach ($post_types as $post_type) {        register_rest_field( $post_type, 'ACF', [            'get_callback'    => 'expose_ACF_fields',            'schema'          => null,       ]     );    }}function expose_ACF_fields( $object ) {    $ID = $object['id'];    return get_fields($ID);}add_action( 'rest_api_init', 'create_ACF_meta_in_REST' );

Here's the gist for reference: https://gist.github.com/MelMacaluso/6c4cb3db5ac87894f66a456ab8615f10


You can use the following plugin to expose the ACF fields in REST.

https://wordpress.org/plugins/acf-to-rest-api/

If your ACF fields have a relationship and want to include those relationships in rest as well, you can use the following plugin.

https://github.com/airesvsg/acf-to-rest-api-recursive