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

如何根据购物车小计调整WooCommerce指定州的UPS 3-Day-Air配送费用?

解决方案

可以实现这个需求,只需在原有woocommerce_package_rates过滤器中加入购物车小计判断和配送州验证逻辑即可。以下是修改后的完整代码:

add_filter( 'woocommerce_package_rates', function( $shipping_costs, $package ) {
    // 定义允许应用该费率规则的州(替换为你实际需要的两个州代码)
    $allowed_states = array('CA', 'NY');
    // 获取当前用户选择的配送州
    $shipping_state = $package['destination']['state'];
    
    // 定义基础最低费率与优惠后费率
    $base_min_cost = 69.95;
    $discounted_min_cost = 19.95;
    // 获取购物车商品小计(不含税、不含运费)
    $cart_subtotal = WC()->cart->get_subtotal();
    
    // 初始化最终使用的最低费率
    $min_cost = $base_min_cost;
    
    // 条件判断:仅当配送州在指定列表且购物车小计超200美元时,使用优惠费率
    if ( in_array( $shipping_state, $allowed_states ) && $cart_subtotal > 200 ) {
        $min_cost = $discounted_min_cost;
    }
    
    // 目标配送方式ID(UPS 3-Day-Air)
    $target_method_id = 'wf_shipping_ups:12';
    
    foreach( $shipping_costs as $shipping_cost ) {
        $shipping_method_id = $shipping_cost->get_id();
        if( $shipping_method_id === $target_method_id ) {
            $cost = (float) $shipping_cost->get_cost();
            // 取UPS实时费率与最低费率中的较高值
            if( $cost < $min_cost ) {
                $shipping_cost->set_cost($min_cost);
            }
        }
    }
    
    return $shipping_costs;
}, 10, 2 ); // 需传入第2个参数$package,因此过滤器参数数量指定为2

关键说明

  • 配送州匹配:通过$package['destination']['state']获取用户配送地址的州信息,确保规则仅在你指定的两个州内生效,与你已有的配送方式显示逻辑兼容。
  • 小计判断逻辑:使用WC()->cart->get_subtotal()获取购物车商品的原始小计(不含税和运费),当金额超过200美元时自动切换为优惠费率。
  • 参数传递调整:原代码未使用$package参数,因此需要在回调函数中添加该参数,并在add_filter末尾指定接受2个参数(默认仅1个)。
  • 费率逻辑保留:维持原有的“取实时费率与最低费率较高值”的规则,仅根据条件动态切换最低费率的数值。

注意事项

  1. 将$allowed_states数组中的州代码替换为你实际需要的两个州(例如'TX'代表德克萨斯州,'FL'代表佛罗里达州)。
  2. 修改代码后,需进入WooCommerce后台清空配送费率缓存:路径为「WooCommerce > 设置 > 配送 > 配送选项」,点击“清除缓存”按钮,确保新规则生效。
  3. 测试时请切换到指定州的配送地址,分别调整购物车金额至200美元以上/以下,验证费率是否正确变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:43:19