自定义以编程方式在 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 产品中设置的自定义属性值