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

如何将Woocommerce可变产品的变体GTIN添加到结构化数据中

问题修复思路

  • 补全Schema规范要求的@type字段前缀,确保结构可以被爬虫正确解析
  • 每个变体的offer节点下新增对应GTIN字段,读取变体自身的_EAN自定义字段值
  • 修复未定义变量的问题,补充$priceuntil的取值逻辑(可根据实际业务规则调整)
  • 修正库存状态取值逻辑,读取每个变体自身的库存状态而不是父产品的,保证数据准确性

备注:如果你的EAN编码为13位,将代码中所有gtin8替换为gtin13即可,符合Schema对应字段规范。

修正后完整代码

// 向页面插入结构化数据
function set_structured_data( $markup, $product ) {
    // 公共品牌字段提前赋值
    $markup['brand'] = array(
        '@type' => 'Brand', 
        'name' => get_post_meta( $product->get_id(), '_brand', true ) 
    );

    if ($product->is_type('simple')){
        // 简单产品直接挂载gtin8到根节点
        $markup['gtin8'] =  get_post_meta( $product->get_id(), '_EAN', true );
    }

    if ($product->is_type('variable')){
        $offers = [];
        $priceuntil = '2030-12-31'; // 替换为实际的价格有效期逻辑,比如促销结束日期
        $available_variations = $product->get_available_variations();
        
        foreach ($available_variations as $variation) {
            $variation_id = $variation['variation_id'];
            $variproduct = wc_get_product($variation_id);
            // 读取变体自身的库存状态
            $stock = $variproduct->get_stock_status();
            // 读取变体自身的EAN值
            $variation_ean = get_post_meta( $variation_id, '_EAN', true );
            
            $offers[] = array(
                '@type'                  => 'Offer', // 补全@前缀符合Schema规范
                'price'                 => $variproduct->get_price(),
                'priceValidUntil'       => $priceuntil,
                'gtin8'                 => $variation_ean, // 新增变体GTIN字段
                'priceSpecification'    => array( 
                    '@type' => 'PriceSpecification',
                    'price'                     => $variproduct->get_price(),
                    'priceCurrency'             => get_woocommerce_currency(),
                    'valueAddedTaxIncluded'     => 'http://schema.org/True'
                ),
                'priceCurrency'         => get_woocommerce_currency(),
                'availability'          => 'http://schema.org/'.$stock,
                'url'                   => $variproduct->get_permalink(), // 替换为变体自身的链接,数据更准确
                'seller'                => array (
                    '@type'                  => 'Organization',
                    'name'                  => 'HeatPerformance®',
                    'url'                   => get_home_url(),
                )
            );
        }
        $markup['offers'] =  $offers;
    }
    return $markup;
}
add_filter( 'woocommerce_structured_data_product',  'set_structured_data', 99, 2 );

验证方式

修改完成后直接查看页面源代码的结构化数据段,确认每个offer节点下已经存在对应的gtin8/gtin13值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:03