当前位置: 首页 > 知识库问答 >
问题:

Wordpress Rest API - Custom Fields

都阳
2023-03-14

我在Wordpress中创建了一个自定义post类型,并将其公开给RESTAPI。我还使用ACF插件在本文中添加了自定义字段。

在我的主题中function.php我在响应中注册了这些字段,当我发出get请求时可以看到它们。

< code>register_rest_field('auto ',' specs ',array('get_callback' =

问题是当我发送帖子请求时,wordpress无法识别这些字段。它创建了一个带有标题的新帖子,所有额外的字段都是空的。

共有3个答案

夏振国
2023-03-14

对我来说,诀窍是将自己连接到rest prepare post,然后将字段添加到数组中,然后返回响应对象。

function slug_add_data($response, $post) {

    $response->data['latitud'] = get_field('latitud', $response->data['id']);
    $response->data['longitud'] = get_field('longitud', $response->data['id']);

    return $response;
}

add_filter('rest_prepare_post', 'slug_add_data', 10, 3);
汪安然
2023-03-14

使用开箱即用的解决方案来访问Rest API中的ACF字段,而不是使用自定义代码
插件URL:https://github.com/airesvsg/acf-to-rest-api

添加过滤器如下:

//Filter to to get acf field within acf field for relational field set
add_filter( 'acf/rest_api/<custom_posttype>/get_fields', function( $data ) {
    if ( ! empty( $data ) ) {
        array_walk_recursive( $data, 'get_fields_recursive' );
    }

    return $data;
} );

如果所有的配置都是正确的,你将得到默认WordPress Rest API响应中的ACF fields对象。

如果需要任何帮助,请告诉我!

柴坚诚
2023-03-14

尝试该解决方案:

function wp_api_encode_acf($data,$post,$context){
    $data['meta'] = array_merge($data['meta'],get_fields($post['ID']));
    return $data;
}

if( function_exists('get_fields') ){
    add_filter('json_prepare_post', 'wp_api_encode_acf', 10, 3);
}

参考:https://gist.github.com/rileypaulsen/9b4505cdd0ac88d5ef51

 类似资料:

相关问答

相关文章

相关阅读