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

WooCommerce自定义评价标签替换为Bazaarvoice时global $product失效问题

问题修复方案

你代码的核心错误有3处:

  • 多余挂载了add_action( 'woocommerce_product_tabs', ' bv_reviews_tab' ),你已经在过滤器中指定了评价tab的回调函数,不需要额外挂载动作,直接删除这行即可
  • 依赖global $product取值不稳定,WooCommerce的Tab回调函数会默认传入当前产品对象,直接通过函数参数接收即可,无需调用全局变量
  • 可变产品循环中每次覆盖$model变量,最终只会拿到最后一个变体的型号,这里优先调整为取主产品的型号,你可以根据自身业务逻辑调整取值规则

修正后完整代码

add_filter( 'woocommerce_product_tabs', 'woo_renam_tabs', 98 );
function woo_renam_tabs( $tabs ) {
    $tabs['additional_information']['title'] = __( 'Product Data' );    // 重命名额外信息tab
    $tabs['additional_information']['callback'] = 'woocommerce_product_additional_information_tab';
    $tabs['reviews']['callback'] = 'bv_reviews_tab'; // 指定评价tab的自定义回调

    return $tabs;
}

// 自定义评价tab回调,直接接收产品对象参数
function bv_reviews_tab( $product ) {
    $model = '';
    // 优先取主产品的型号
    $main_model = esc_attr( get_post_meta( $product->get_id(), '_model_number', true ) );
    if ( !empty($main_model) ) {
        $model = $main_model;
    } elseif ( $product->is_type('simple' ) ) {
        $model = esc_attr( get_post_meta( $product->get_id(), '_model_number', true ) );
    } elseif ( $product->is_type('variable' ) ) {
        // 取第一个有值的变体型号,你可以根据需求调整为取全部/指定变体的逻辑
        $children_ids = $product->get_children();
        foreach ( $children_ids as $child_id ) {
            $child_model = esc_attr( get_post_meta( $child_id, '_model_number', true ) );
            if ( !empty($child_model) ) {
                $model = $child_model;
                break;
            }
        }
    }
    // 只有型号存在时输出Bazaarvoice容器
    if ( !empty($model) ) :
?>
<div data-bv-show="reviews" data-bv-product-id="<?php echo $model; ?>"></div>
<?php
    endif;
}

代码说明

  • 完全移除了对global $product的依赖,直接通过回调参数拿到产品对象,不会再出现取值失效的问题
  • 新增了型号的非空判断,避免出现空值传入Bazaarvoice的异常
  • 可变产品的型号取值逻辑调整为优先取主产品型号,再取首个有值的变体型号,你可以根据自身Bazaarvoice的配置规则修改这部分逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:36:03