如何用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
相关产品推荐
相关产品推荐

