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

在WooCommerce结账页基于单选按钮添加含缎带选项的动态条件费用

修改WooCommerce动态费用代码,添加“缎带”选项

没问题,我帮你调整LoicTheAztec的那段代码,新增第三个“缎带”选项的费用计算逻辑。下面是完整的修改后代码,关键部分我会给你说明:

// Add a custom dynamic packaging fee
add_action( 'woocommerce_cart_calculate_fees', 'add_packaging_fee', 20, 1 );
function add_packaging_fee( $cart ) {
    // 跳过后台操作,只在前端和AJAX请求中生效
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

    // 获取选中的包装选项(这里要和你 checkout 页面单选按钮的 name 对应)
    $selected_option = isset( $_POST['packaging_option'] ) ? sanitize_text_field( $_POST['packaging_option'] ) : '';

    // 根据不同选项设置对应费用
    switch( $selected_option ) {
        case 'regular':
            $fee_amount = 0; // 普通包装免费用
            $fee_label = '普通包装';
            break;
        case 'gift':
            $fee_amount = 5; // 礼品包装收5美元(可自行修改)
            $fee_label = '礼品包装';
            break;
        case 'ribbon': // 新增的缎带选项
            $fee_amount = 3; // 缎带收3美元(可自行修改)
            $fee_label = '缎带包装';
            break;
        default:
            $fee_amount = 0;
            $fee_label = '';
            break;
    }

    // 如果费用大于0,添加到购物车
    if ( $fee_amount > 0 ) {
        $cart->add_fee( __($fee_label, 'woocommerce'), $fee_amount, false );
        // 第三个参数设为 true 的话,费用会包含税费,根据你的需求调整
    }
}

关键说明:

  • 确保你 checkout 页面的单选按钮name属性是packaging_option,如果不是,把代码里的$_POST['packaging_option']改成你实际使用的名称。
  • 费用金额可以随便调整,甚至可以改成基于购物车总价的百分比,比如把$fee_amount = 3改成$fee_amount = $cart->subtotal * 0.02,就是按订单总价的2%收取缎带费用。
  • add_fee函数的第三个参数控制费用是否含税,默认false是不含税,改成true就会自动计算税费。
  • 如果你的选项是通过session存储的(有些场景下单选按钮值会存在session里),可以把获取值的部分改成WC()->session->get('packaging_option'),确保在页面刷新后费用依然生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:16