根据购物车小计更改 WooCommerce 特定运输方式成本

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

我正在管理一个使用 Woocommerce 的 WP 网站。结账时,有一个 3 天空运方式选项,目前仅向居住在美国 2 个特定州的客户显示。运输方式是 UPS 的实时费率,并通过 UPS API 获取。 (该 API 通过 PluginHive UPS Shipping & Label 插件处理)。

目前,我有一个正在运行的过滤器,如果用户的 $shipping_state 位于过滤器的 2 状态数组中,则该过滤器会取消设置所有其他运输方式。如果州地址不在 2 个州的数组中,另一个过滤器会显示除 3-Day_Air 选项之外的所有运输选项。

然后,下面代码片段中的此过滤器会将 3 天航空的传入实时价格更改为 69.95 美元的运费。

我的问题:如果购物车小计超过 200 美元,有没有办法从代码片段中设置的费率中减去 50 美元? (或者如果满足 >200 条件,则重置费率 19.95 美元?)

这个帖子的答案已经很接近了

这是另一种解决方法,但它必须仅适用于 Shipping_address 是这两种状态之一的情况。

任何帮助将不胜感激。我正在学习一些 PHP 的知识,但它很快就变得模糊起来。预先感谢。

add_filter( 'woocommerce_package_rates', function( $shipping_costs) {
    
    $shipping_method_min_cost = array(
        'wf_shipping_ups:12'    =>  69.95,      // Shipping id  => min_cost
        
    );

    foreach( $shipping_costs as $shipping_cost ) {
        $shipping_method_id = $shipping_cost->get_id();
        if( isset($shipping_method_min_cost[$shipping_method_id]) ) {
            $cost = (float) $shipping_cost->get_cost();
            if( $cost < $shipping_method_min_cost[$shipping_method_id] ) {
                $shipping_cost->set_cost($shipping_method_min_cost[$shipping_method_id]);
            }
        }
    }
    return $shipping_costs;
});

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

您只需在函数中使用以下内容:

    $shipping_method_min_cost = array(
        'wf_shipping_ups:12' => WC()->cart->subtotal >= 200 ? 69.95 : 19.95,
    );

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.