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

WooCommerce变体无促销价时,加入购物车按钮价格脚本失效求助

问题排查与修复方案

你的问题核心在于两点:

  1. 仅监听了found_variation事件,未处理变体重置(比如用户清空选择项)的场景,也没设置按钮的初始价格内容
  2. 当所有变体都无促销价时,variation.price_html的渲染逻辑和有促销价时存在差异,直接替换会导致异常

以下是修复后的完整代码及说明:

修复后的PHP逻辑

<?php
add_action( 'woocommerce_after_add_to_cart_form', 'bbloomer_echo_variation_info' );

function bbloomer_echo_variation_info() {
    global $product;
    if ( ! $product->is_type( 'variable' ) ) return;

    // 获取产品最低变体价格作为初始显示内容
    $initial_price = wc_price( $product->get_variation_price( 'min', true ) );

    wc_enqueue_js( "
        // 页面加载时先填充初始价格
        $('.pricePoint').html('{$initial_price}');

        // 选中变体时更新按钮内的价格
        $(document).on('found_variation', function( event, variation ) {   
            $('.pricePoint').html(variation.price_html || '{$initial_price}');  
        });

        // 用户重置变体选择时,恢复初始价格
        $(document).on('reset_variation', function() {
            $('.pricePoint').html('{$initial_price}');
        });
    " );
}
?>

对应的按钮代码

<button type="submit" class="pricePoint single_add_to_cart_button button alt" title="Add to Cart"></button>

关键修复点

  • 增加页面初始化时的价格填充,避免按钮一开始处于空白状态
  • 新增reset_variation事件监听,处理用户取消变体选择后的价格恢复逻辑
  • 给variation.price_html增加 fallback 机制,防止其为空时出现渲染异常
  • 无论变体是否设置促销价,都能保证价格内容稳定显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:57:17