自定义以编程方式在 Woocommerce 中添加运费 [重复]

Posted

技术标签:

【中文标题】自定义以编程方式在 Woocommerce 中添加运费 [重复]【英文标题】:Custom add a shipping price in Woocommerce programmatically [duplicate] 【发布时间】: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 美元,并且购物车会自动刷新此金额?

【问题讨论】:

【参考方案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') ) 再次感谢!你这个男人!

以上是关于自定义以编程方式在 Woocommerce 中添加运费 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 3 中以编程方式设置自定义运费

以编程方式更新 WooCommerce 产品中设置的自定义属性值

在 Woocommerce 中以编程方式添加新产品类别

向 Woocommerce 运输方式添加不同的自定义标签

自定义添加到购物车按钮以将多个产品添加到购物车中:woocommerce

woocommerce 自定义结帐字段以增加订购 ajax 的费用