如何在WooCommerce中根据购物车总额添加动态分级手续费?
在WooCommerce中根据购物车总额添加动态分级手续费
我可以帮你实现这个需求,下面是经过验证的代码方案,它会根据购物车总额自动计算并添加分级手续费:
add_action( 'woocommerce_cart_calculate_fees', 'custom_fee_based_on_cart_total', 10, 1 ); function custom_fee_based_on_cart_total( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // 手续费百分比,可根据需求自行修改 $fee_percentage = 12; // 获取当前购物车的商品总额 $cart_total = $cart_object->cart_contents_total; // 分级计算逻辑:购物车总额≥25时按百分比收取手续费,否则不收取 $fee = $cart_total >= 25 ? $cart_total * $fee_percentage / 100 : 0; if ( $fee != 0 ) { // 添加手续费,名称支持多语言,最后一个参数false表示该费用不含税 $cart_object->add_fee( __( "Kosten MandaBai", "woocommerce" ), $fee, false ); } }
代码关键说明:
- 采用WooCommerce官方推荐的
woocommerce_cart_calculate_fees钩子触发费用计算,确保在购物车和结账流程中正确执行 - 开头的判断条件
is_admin() && ! defined( 'DOING_AJAX' )是为了避免在后台管理操作时误加手续费,仅在前端用户流程中生效 - 你可以直接修改
$fee_percentage的值调整手续费比例,比如改成15就对应15%的手续费 - 分级规则可通过修改
$cart_total >= 25这个条件调整,比如改成$cart_total >= 50就只对总额50以上的订单收取手续费 - 如果需要手续费包含税费,只需把
add_fee方法的第三个参数改为true即可
内容的提问来源于stack exchange,提问作者G.T.
相关产品推荐
相关产品推荐

