高级自定义字段 update_field() 不起作用

我有一个代码可以更改发布数据并将其替换为 json 文件的数据:

add_filter( 'wp_insert_post_data', 'update_post',10 ,3 );

function update_post( $data, $postarr ) {
    $postid = $postarr['ID'];
    $imdbl = get_field('imdbl', $postid);
    if ($imdbl) {
        $url = 'http://www.omdbapi.com/?i='.$imdbl.'&apikey=c0ceddac';
        $jdata = file_get_contents($url);
        $json = json_decode($jdata);
        $data['post_title'] = $json->Title;

        update_field('ReleaseY', $json->Year, $postid);

    }

    return $data;

}

现在,这段代码可以工作了,它获取标题并将其放在帖子标题中。我的问题是这部分代码:

update_field('ReleaseY', $json->Year, $postid);

此代码替换了自定义字段的值,它在“帖子”帖子类型上完美运行,但在其他帖子类型(在本例中为“电影”)中,它根本不起作用。

我不知道问题是什么,我在互联网上进行了搜索,我尝试了所有方法。

请帮我!!

谢谢你。

stack overflow Advanced Custom Field update_field() is not working
原文答案

答案:

作者头像

尝试使用本机 WP 函数 update_post_meta 代替,除非您确定 ACF 在您尝试使用该函数时已加载:

update_post_meta( $postid, 'ReleaseY', $json->Year );

参考: https://developer.wordpress.org/reference/functions/update_post_meta/

作者头像

我只是改变了:

update_field('ReleaseY', $json->Year, $postid) 

至:

update_post_meta($postid,'ReleaseY', $json->Year) 

现在看起来不错。