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

WooCommerce迷你购物车未显示自定义费用问题求助

解决WooCommerce迷你购物车不显示自定义费用的问题

你当前用woocommerce_before_calculate_totals钩子添加费用的逻辑,在购物车和结账页面能正常触发,但迷你购物车的计算流程不会调用这个钩子,所以费用既不显示,总额也没包含进去。下面是针对性的解决方案:

完整代码实现

这段代码会同时兼顾购物车/结账页的原有逻辑,以及迷你购物车的费用显示和总额计算:

// 购物车与结账页添加费用
add_action( 'woocommerce_before_calculate_totals', 'modify_cart_price', 13, 1);
function modify_cart_price( $cart_obj ) {
    // 避免后台AJAX冲突
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    $cart_obj->add_fee('Fee Description', 10);
}

// 调整迷你购物车总额,包含自定义费用
add_filter( 'woocommerce_widget_cart_total_args', 'adjust_minicart_total_include_fee' );
function adjust_minicart_total_include_fee( $args ) {
    global $woocommerce;
    $fee_total = 0;
    // 累加所有已添加的费用
    foreach ( $woocommerce->cart->get_fees() as $fee ) {
        $fee_total += $fee->amount;
    }
    // 更新迷你购物车显示的总额
    $args['total'] = wc_price( $woocommerce->cart->total + $fee_total );
    return $args;
}

// 在迷你购物车中显示费用条目
add_action( 'woocommerce_widget_cart_before_buttons', 'display_fee_in_minicart' );
function display_fee_in_minicart() {
    global $woocommerce;
    foreach ( $woocommerce->cart->get_fees() as $fee ) {
        echo '<p class="woocommerce-mini-cart__fee mini-cart__fee">';
        echo esc_html( $fee->name ) . ': ' . wc_price( $fee->amount );
        echo '</p>';
    }
}

代码说明

  • 保留原有钩子逻辑,确保购物车和结账页的费用功能正常。
  • 通过woocommerce_widget_cart_total_args钩子修改迷你购物车的总额计算,把自定义费用加进去。
  • 用woocommerce_widget_cart_before_buttons钩子在迷你购物车的操作按钮上方插入费用条目,让用户能直观看到这笔额外支出。

注意事项

  • 代码可以添加到主题的functions.php文件,或使用自定义代码插件(如Code Snippets)来管理,避免主题更新导致代码丢失。
  • 若使用了缓存插件,修改后需要清除缓存才能看到效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:42:47