获得WooCommerce免费送货的最低订购量

问题描述 投票:1回答:1

我想知道...是否可以在WooCommerce中获得“免费送货的最低订购额?”>

我的想法是这样的:

1)用WooCommerce地理位置检查访客国家/地区>

2)检查运输区域是否包含访客国家/地区

3)如果是>>获取该送货区域的送货方式

4)如果送货方式='free_shipping'回显'免费送货的最小订单金额='$ free_shipping_order_amount

这将可行吗?但我无法实现。

这是我到目前为止的内容:

$delivery_zones = WC_Shipping_Zones::get_zones();
$geo                = new WC_Geolocation();
$user_ip            = $geo->get_ip_address();
$user_geo           = $geo->geolocate_ip( $user_ip );
$country            = $user_geo['country'];
$user_country       = WC()->countries->countries[ $country ];

foreach ((array) $delivery_zones as $key => $delivery_zone ) {

    if (strpos($delivery_zone['formatted_zone_location'], $user_country) !== false) {
        foreach ($delivery_zone['shipping_methods'] as $value) {
            break;
        }

        if ($value->id == 'free_shipping') {
            // This is where all magic should happen
        }

    }

}

[任何帮助将不胜感激:) T.i.a。

我想知道...是否可以在WooCommerce中获得“免费送货的最低订购额”?我的想法是这样的:1)使用WooCommerce地理位置检查访客国家/地区2)检查...

php wordpress woocommerce shipping shipping-method
1个回答
0
投票

我目前对超过75美元的商品提供免费送货服务,但是如果管理员登录并下订单,则希望管理员免费送货。我尝试使用以下代码,但不会触发它。难道我做错了什么?

add_filter( 'woocommerce_package_rates', 'show_free_shipping', 10, 2 );
function show_free_shipping( $rates, $package ) {
    global $current_user;
    $free = array();
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id ) {
            if ($current_user->ID) {
                $user_roles = $current_user->roles;
                $user_role = array_shift($user_roles);

                if ($user_role == 'administrator') {
                    $free[ $rate_id ] = $rate;
                    break;
                }
            }
        }
    }
    return ! empty( $free ) ? $free : $rates;
    //return $rates;
}
© www.soinside.com 2019 - 2024. All rights reserved.