You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Woocommerce REST API更新产品的ACF自定义字段

存在的问题

你当前的实现有四个常见错误,都会导致ACF字段更新失败:

  • 未开启对应字段组的REST API访问权限:ACF默认不会把字段组暴露给REST API,需要手动开启
  • 调用的端点路径错误:ACF针对自定义文章类型的REST接口必须包含posts层级,你用的路径缺少该层级
  • 用字段别名而非字段全局key提交:默认情况下ACF REST API只识别field_xxxxxx格式的全局字段key,直接填demo_url这类别名会被直接忽略
  • 未携带有效鉴权凭证:如果请求实例没有绑定拥有产品编辑权限的身份凭证(应用密码/管理员Cookie),请求会被WordPress直接拦截
正确实现方案

前置操作

  1. 进入WordPress后台ACF字段组编辑页,找到对应字段组的「设置」板块,勾选「在REST API中显示」保存
  2. 找到demo_url字段对应的全局key(点击字段编辑按钮,在URL的field_key参数中可以获取,格式为field_xxxxxx)
  3. 确认你初始化$woocommerce_tn请求实例时已经配置了有效的鉴权信息

调整后代码

$acf_data = [
    "fields" => [
        // 替换为你自己的demo_url字段对应的全局field key
        'field_xxxxxx' => 'http://myurl'
    ]
];
// 补全端点路径的posts层级
$woocommerce_tn->put('/wp-json/acf/v3/posts/product/'.$product_tn->id, $acf_data);

可选配置:允许用字段别名提交

如果你不想用全局field key,可以在主题functions.php中添加以下钩子放开别名提交限制:

add_filter('acf/rest_api/field_settings/show_in_rest', '__return_true');
add_filter('acf/rest_api/field_settings/edit_in_rest', '__return_true');

添加完成后你就可以继续用demo_url作为字段键提交请求,不需要替换为全局key。

内容的提问来源于stack exchange,提问作者Francesco Raucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:27:04