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

如何在WooCommerce中将满70美元可用的免费配送设为默认选项

问题原因排查

  • 配送方式ID判断错误:你代码中判断$rate->method_id == 'free_shipping30'是错误的,WooCommerce中免费配送的基础method_id固定为free_shipping,后面的数字是该配送方式的实例ID,不属于method_id的字段值,所以匹配永远不生效。
  • 配送费率读取方式不规范:直接读取WC()->session->get('shipping_method_0')的方式兼容性差,不同站点、多配送区域的配置下很可能取不到对应值。
  • 钩子覆盖范围不足:仅绑定woocommerce_before_cart钩子只会在购物车页面生效,结算页无法触发该逻辑。
  • 缺少降级逻辑:如果免费配送不存在(购物车金额不足70美元)时,没有保留原有选中的配送方式,可能导致异常。

修复后的可用代码

add_filter( 'woocommerce_shipping_chosen_method', 'auto_select_free_shipping_when_available', 10, 3 );
function auto_select_free_shipping_when_available( $default_method, $available_methods, $package ) {
    // 遍历所有可用配送方式,查找免费配送
    foreach ( $available_methods as $rate_id => $rate ) {
        if ( $rate->method_id === 'free_shipping' ) {
            // 找到免费配送直接返回作为默认选中项
            return $rate_id;
        }
    }
    // 没有免费配送时返回原有默认值
    return $default_method;
}

可选调整说明

如果你有多个免费配送实例,需要指定选中某一个,可以在购物车页右键审查配送选项的单选按钮,value属性就是完整的rate_id,把判断条件改成$rate_id === 'free_shipping:30'(对应你原来的30实例ID)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:09:03