在WooCommerce中根据购物车项目数量设置动态运输方式标签



在我的 wooCommerce 购物车中,运费仍然由下面的代码正确计算。但是运输标签现在没有更新。我找不到原因;可能是最近的WooCommerce 3.7更新?感谢您的帮助!

/**
* Add different price for shipping based on products quantity
*/
function mx_shop_shipping_price( $rates, $package ) {
//Shipping Mode 1
if ( WC()->cart->cart_contents_count < 4 ) {
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return $rate->get_label() === 'Shipping Mode 1'; // Shipping Mode 1
});
}
//Shipping Mode 2
if ( WC()->cart->cart_contents_count < 13 ) {
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return $rate->get_label() === 'Shipping Mode 2';
});
}
//Shipping Mode 3
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return $rate->get_label() === 'Shipping Mode 3';
});     
}
add_filter( 'woocommerce_package_rates', 'mx_shop_shipping_price', 10, 2 );
/** End

发货标签未更新的购物车详细信息。注意 订单总计已正确更新

您使用的是比较运算符"==="而不是赋值运算符。以下是您可以尝试的更新代码:

function mx_shop_shipping_price( $rates, $package ) {
//Shipping Mode 1
if ( WC()->cart->cart_contents_count < 4 ) {
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return  $rates[$rate_key]->label = __( 'Shipping Mode 1', 'woocommerce' ); // Shipping Mode 1
});
}
//Shipping Mode 2
if ( WC()->cart->cart_contents_count < 13 ) {
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return $rates[$rate_key]->label = __( 'Shipping Mode 2', 'woocommerce' );
});
}
//Shipping Mode 3
return array_filter($rates, function (WC_Shipping_Rate $rate) {
return $rates[$rate_key]->label = __( 'Shipping Mode 3', 'woocommerce' );;
});     
}
add_filter( 'woocommerce_package_rates', 'mx_shop_shipping_price', 10, 2 );

您应该需要刷新运输缓存:

1(首先,此代码已经保存在您的函数.php文件中。

2( 在配送设置中,输入配送区域并禁用 运输方式和"保存"。

然后重新启用该运输方式并"保存"。大功告成。

您可以在此处找到已经给出的此类要求的答案

最新更新