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

