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

使用WC Vendors时,WooCommerce API返回产品列表无法获取商家ID与名称

解决WooCommerce v3 REST API返回商家ID和名称的问题

首先,你遇到的问题核心原因是**woocommerce_api_product_response是旧版REST API(v1/v2)的钩子**,而你使用的是v3版本的API,所以这个钩子根本不会触发。下面是针对v3 API的正确解决方案:

正确的代码实现

替换你当前的代码,在主题的functions.php中添加以下内容:

add_filter( 'woocommerce_rest_prepare_product', 'add_vendor_data_to_product_api_response', 10, 3 );
function add_vendor_data_to_product_api_response( $response, $product, $request ) {
    // 用WC Vendors官方函数获取产品关联商家,比直接读post_author更可靠
    $vendor = get_wcv_product_vendor( $product->get_id() );
    
    if ( $vendor ) {
        // 将商家ID和名称添加到API响应数据中
        $response->data['vendor_id'] = $vendor->id;
        $response->data['vendor_name'] = $vendor->user_data->display_name;
    } else {
        // 没有关联商家时返回默认值(可根据需求调整)
        $response->data['vendor_id'] = 0;
        $response->data['vendor_name'] = '站点管理员';
    }
    
    return $response;
}

为什么原来的代码不生效?

  • WooCommerce v3 REST API采用了全新的钩子命名规则:woocommerce_rest_prepare_{post_type},对应产品的就是woocommerce_rest_prepare_product。
  • 旧钩子woocommerce_api_product_response仅适用于v1/v2版本的API,在v3版本中已经被彻底弃用,所以你的代码不会被执行。

额外注意事项

  1. 权限检查:确保你使用的API密钥拥有read_products权限,否则可能无法获取完整的产品数据。
  2. 缓存清除:修改代码后,记得清除WordPress缓存和浏览器缓存,避免请求到旧的响应结果。
  3. 兼容性保障:使用get_wcv_product_vendor()是WC Vendors官方推荐的方式,能兼容插件的特殊逻辑(比如部分场景下商家并非直接的文章作者)。

内容的提问来源于stack exchange,提问作者Rob Turkruyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:33