【问题标题】:Custom add a shipping price in Woocommerce programmatically [duplicate]自定义以编程方式在 Woocommerce 中添加运费 [重复]
【发布时间】:2020-07-09 06:33:38
【问题描述】:

我正在尝试通过在满足条件时更改交货价格来自定义 Woocommerce 中的购物车代码。

例如,如果产品重 25 公斤,则只需在顶部添加另一个价格。

这是我在functions.php中的代码,但是当我刷新购物车时它似乎不起作用。

$chosen_shipping_state = WC()->customer->get_shipping_postcode();
$chosen_state = $chosen_shipping_state;

// Get the selected shipping price
$chosen_shipping_method_price = WC()->session->get('cart_totals')['shipping_total'];

if ($cartweight >= 25 && $cartweight <= 50) {
        
        WC()->session->set('shipping_total', '100');
        do_action( 'woocommerce_cart_updated' );
        
}
        

所以所选快递的当前价格是 5.50 美元。

如果产品重量超过 25 公斤,我如何将快递价格设置为 11 美元,并且购物车会自动刷新此金额?

【问题讨论】:

    标签: php sql wordpress api woocommerce


    【解决方案1】:

    首先,您必须选择运输方式 ID。

    其次,您需要将此代码放在您的活动主题目录中的functions.php 文件中。如果您的代码不起作用,请尝试清除 WooCommerce 瞬态。为了清除您的 WooCommerce 瞬态,您可以转到 WooCommerce -> 状态。然后单击工具选项卡,您将看到 WooCommerce 瞬态。单击清除瞬态按钮。

    add_filter( 'woocommerce_package_rates', 'override_ups_rates' );
    function override_ups_rates( $rates ) {
        foreach( $rates as $rate_key => $rate ){
            // Check if the shipping method ID is UPS for example
            if( ($rate->method_id == 'flexible_shipping_ups') ) {
                // Set cost to zero
                $rates[$rate_key]->cost = 5.50;
            } 
        }
        return $rates;        
    }
    

    【讨论】:

    • 非常感谢!!有效!!! :D 稍微调整一下,我必须 print_r($rates) 才能清楚地看到数组中的所有元素。事实证明“method_id”不匹配,它必须匹配“id”,因此代码是 if( ($rate->id == 'flexible_shipping_ups') ) { 再次感谢!你这个男人!
    猜你喜欢
    • 2021-04-24
    • 2018-07-25
    • 2019-05-09
    • 1970-01-01
    • 2021-05-03
    • 2021-01-30
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多