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

WooCommerce中免运费可用时设置Local Pick-up费用为零

解决方案

直接修改你的代码,在免运费生效时把Local Pick-up的费用强制设为0即可,同时保留原有的配送方式筛选逻辑:

add_filter( 'woocommerce_package_rates', 'hide_shipping_except_local_when_free_is_available', 100 );
function hide_shipping_except_local_when_free_is_available($rates) {
    $free = $local = array();

    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id ) {
            $free[ $rate_id ] = $rate;
        } elseif ( 'local_pickup' === $rate->method_id ) {
            $local[ $rate_id ] = $rate;
        }
    }

    // 当免运费可用时,将Local Pick-up设为免费
    if ( ! empty( $free ) && ! empty( $local ) ) {
        foreach ( $local as $local_rate_id => $local_rate ) {
            // 设置配送费用为0
            $local_rate->cost = 0;
            // 清空所有税费(如果有)
            $local_rate->taxes = array();
            // 更新修改后的自提选项
            $local[ $local_rate_id ] = $local_rate;
        }
        return array_merge( $free, $local );
    }

    return $rates;
}

关键修改说明

  • 新增Local Pick-up费用修改逻辑:当检测到免运费选项存在时,遍历所有自提配送方式,将费用cost设为0,同时清空税费数组taxis,确保完全免费。
  • 保留原有核心逻辑:免运费不可用时,返回所有原始配送方式。

测试注意事项

  1. 修改代码后,先清空购物车并刷新页面,避免WooCommerce的配送方式缓存影响测试结果。
  2. 测试两种场景:
    • 购物车小计≥45欧元:确认显示免运费和免费自提两个选项
    • 购物车小计<45欧元:确认显示所有付费配送方式,自提恢复原有定价(如果之前是付费的)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:45:19