簡體   English   中英

Wordpress Rest API - 自定義字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM