如何为Woocommerce的「Local Pickup」添加满指定金额免配送费功能
满75美元自动免除本地配送费实现方案
直接在当前主题的functions.php文件中添加自定义代码是最高效的实现方式,无需额外插件,也不用依赖优惠券功能,不会和你现有支持全域发货+本地可选配送的规则冲突。
操作步骤
- 提前备份站点
functions.php文件,避免修改出错影响站点运行 - 登录WordPress后台,进入「外观」-「主题文件编辑器」,在右侧文件列表选择主题函数(functions.php)
- 将下方代码粘贴到文件最末尾,保存即可生效
add_filter( 'woocommerce_package_rates', 'wc_free_local_pickup_when_order_over_amount', 10, 2 ); function wc_free_local_pickup_when_order_over_amount( $shipping_rates, $package ) { // 可自定义配置项 $free_shipping_threshold = 75; // 免运费订单门槛金额 $local_shipping_method_id = 'local_pickup'; // 本地配送方式ID,自定义过可替换 // 获取订单商品总金额 $order_subtotal = WC()->cart->get_subtotal(); // 订单金额达标时,将本地配送费修改为0 if ( $order_subtotal >= $free_shipping_threshold && isset( $shipping_rates[$local_shipping_method_id] ) ) { $shipping_rates[$local_shipping_method_id]->cost = 0; // 同步清空本地配送对应的税费,不需要可删除此行 $shipping_rates[$local_shipping_method_id]->taxes = array(); } return $shipping_rates; }
补充说明
- 如果你修改过本地配送方式的默认ID,可在WooCommerce「设置」-「配送」-「对应本地配送区域」中,鼠标悬停在本地配送的编辑按钮上,查看浏览器地址栏的
instance_id参数值,替换代码里的local_pickup即可 - 后续需要调整免运费门槛时,直接修改
$free_shipping_threshold的数值即可,操作成本远低于优惠券和插件配置 - 代码部署完成后,清空WooCommerce缓存和浏览器缓存,用不同金额的测试单验证规则生效即可
内容的提问来源于stack exchange,提问作者L. Hawk
相关产品推荐
相关产品推荐

