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

WooCommerce按配送区域与距离设运费:实现用户选位匹配对应规则

解决方案

1. 定义A区域的目标州列表

首先明确A区域包含的6个州,用常量定义方便后续判断:

// 替换为你A区域实际的6个州缩写(示例为美国州格式,根据你的地区调整)
define('A_REGION_TARGET_STATES', ['CA', 'NY', 'TX', 'FL', 'IL', 'PA']);

2. 处理谷歌地图地址自动完成回调

当用户通过谷歌地图选择地址后,提取州信息并触发WooCommerce重新计算运费,确保系统识别正确区域:

// 初始化谷歌地图地址自动完成并监听选择事件
function initGoogleAddressAutocomplete() {
    const stateInput = document.getElementById('shipping_state') || document.getElementById('billing_state');
    if (!stateInput || typeof google === 'undefined' || typeof google.maps === 'undefined') return;

    const autocomplete = new google.maps.places.Autocomplete(stateInput, {
        types: ['geocode'],
        componentRestrictions: { country: 'US' } // 根据你的目标国家调整
    });

    autocomplete.addListener('place_changed', function() {
        const place = this.getPlace();
        let selectedState = '';
        
        // 从地址组件中提取州/省信息
        place.address_components.forEach(component => {
            if (component.types.includes('administrative_area_level_1')) {
                selectedState = component.short_name;
            }
        });

        if (selectedState) {
            stateInput.value = selectedState;
            // 触发WooCommerce更新结账信息,重新计算运费
            jQuery('body').trigger('update_checkout');
        }
    });
}

// 页面加载完成后初始化
jQuery(document).ready(initGoogleAddressAutocomplete);

3. 强制匹配对应区域的运费规则

通过WooCommerce过滤器,根据选中的州显示/隐藏对应配送方法,确保A区域用区域运费,其他区域用按距离运费:

function filter_shipping_methods_by_state($available_methods, $package) {
    $selectedState = isset($package['destination']['state']) ? $package['destination']['state'] : '';
    // 替换为你实际的配送方法ID(在WooCommerce配送设置中查看)
    $aRegionMethodId = 'flat_rate:1'; // A区域的按区域收费方法ID
    $bRegionMethodId = 'kikote_distance_range_shipping'; // B区域的按距离收费方法ID

    if (in_array($selectedState, A_REGION_TARGET_STATES)) {
        // A区域:移除按距离收费的方法
        unset($available_methods[$bRegionMethodId]);
    } else {
        // 非A区域:移除按区域收费的方法
        unset($available_methods[$aRegionMethodId]);
    }

    return $available_methods;
}
add_filter('woocommerce_package_rates', 'filter_shipping_methods_by_state', 10, 2);

注意事项

  • 替换代码中的州列表、配送方法ID为你WooCommerce后台的实际配置
  • 确保已正确加载谷歌地图API并配置有效密钥
  • 你原有的基于购物车小计调整运费的代码可继续保留,它会正常作用于B区域的按距离运费计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:48:10