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

如何用Code Snippets将WordPress的ACF ISBN字段映射为Google Listings and Ads的GTIN属性

解决方案:将ACF ISBN字段映射到Google Listings and Ads的GTIN属性

核心实现代码

直接通过Code Snippets插件添加以下PHP代码,利用Google Listings and Ads提供的过滤器钩子覆盖GTIN属性值:

add_filter( 'woocommerce_gla_product_attributes', 'map_acf_isbn_to_gla_gtin', 10, 2 );
function map_acf_isbn_to_gla_gtin( $attributes, $product ) {
    // 获取当前产品ID
    $product_id = $product->get_id();
    
    // 从ACF获取ISBN字段值(确保字段名与你的ACF字段完全一致)
    $isbn_value = get_field( 'isbn', $product_id );
    
    // 如果ISBN值存在,替换GTIN属性
    if ( ! empty( $isbn_value ) ) {
        $attributes['gtin'] = sanitize_text_field( $isbn_value );
    }
    
    return $attributes;
}

关键排查点(解决你之前拿不到值的问题)

  • 确认ACF字段名:检查你的ACF字段内部名称是否确实是isbn(不是显示名称),可以在ACF字段编辑页面的「字段名称」项查看,拼写错误是最常见的问题。
  • 产品类型适配:如果是可变产品,需要确保子产品也设置了ACF ISBN字段,或者修改代码支持从父产品继承值(如果你的业务逻辑允许):
    // 可变产品子产品获取父产品ISBN的逻辑(可选)
    if ( $product->is_type('variation') ) {
        $parent_id = $product->get_parent_id();
        $isbn_value = get_field( 'isbn', $parent_id );
    } else {
        $isbn_value = get_field( 'isbn', $product_id );
    }
    
  • 测试字段值是否能正常获取:可以临时在代码中添加调试代码,验证是否能拿到ACF值:
    // 临时调试:在产品编辑页查看输出(记得用完删掉)
    if ( is_admin() && get_current_screen()->id === 'product' ) {
        var_dump( get_field( 'isbn', $product_id ) );
    }
    
  • 刷新Google同步数据:代码生效后,需要进入WordPress后台的「营销 > Google Listings and Ads」,手动触发一次产品同步,或者等待自动同步周期更新。

额外注意事项

  • 确保ACF字段是绑定在「产品」(product)这个自定义帖子类型上的,不要选错了帖子类型。
  • 如果ISBN值包含非数字字符,记得用sanitize_text_field或者preg_replace('/[^0-9Xx]/', '', $isbn_value)清理格式,符合Google Merchant对GTIN的格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:52:36