我在Wordpress中创建了一个自定义帖子类型,并将其暴露给其他API。我还使用ACF插件为此帖添加了自定义字段。
在我的主题function.php中,我在响应中注册了这些字段,当我发出get请求时,我可以看到它们。
register_rest_field('auto', 'specs', array('get_callback' => 'get_autos_specs_for_api'));
问题在于,当我发送帖子请求时,wordpress无法识别这些字段。它创建一个带有标题的新帖子,所有额外的字段都是空的。
答案 0 :(得分:0)
答案 1 :(得分:0)
对我来说,诀窍是将自己挂钩到其余的准备帖子,然后将你的字段添加到数组,然后返回响应对象。
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);
答案 2 :(得分:0)
不是使用自定义代码,而是使用开箱即用的解决方案将ACF字段访问到Rest API。
插件网址: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字段对象。
让我知道是否需要帮助!