[英]Wordpress Rest API - Custom Fields
我在 Wordpress 中創建了一個自定義帖子類型並將其公開給 rest API。 我還使用 ACF 插件向這篇文章添加了自定義字段。
在我的主題 function.php 中,我在響應中注冊了這些字段,當我發出 get 請求時我可以看到它們。
register_rest_field('auto', 'specs', array('get_callback' => 'get_autos_specs_for_api'));
問題是當我發送帖子請求時,wordpress 無法識別這些字段。 它創建了一個帶有標題的新帖子,所有額外的字段都是空的。
試試這個解決方案:
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
對我來說,訣竅是將自己掛鈎到其余的准備帖子,然后將您的字段添加到數組中,然后返回響應對象。
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);
使用開箱即用的解決方案將 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 字段對象。
如果需要任何幫助,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.