我遇到一个问题,试图将一种运输方法添加到我以前根据重量删除的运输类中。
当购物车重量超过300磅时,它会取消设置flat_rate:10
以外的所有运输方式(如果未设置),则会保留flat_rate:10
以外的所有运输方式。我在可能小于300磅的物品的运输类别中添加运输方法flat_rate:10
时遇到问题。
我认为问题在于,当我根据重量取消设置flat_rate:10
方法时,会阻止我将其添加到货运类别中。
add_filter( 'woocommerce_package_rates','bbloomer_woocommerce_tiered_shipping', 10, 2 );
function bbloomer_woocommerce_tiered_shipping( $rates, $package ) {
if ( WC()->cart->cart_contents_weight < 70 ) {
if ( isset( $rates['fedex:PRIORITY_OVERNIGHT'], $rates['fedex:FEDEX_2_DAY'], $rates['fedex:FEDEX_GROUND'] ) ) unset( $rates['flat_rate:10'] ) ;
} else {
if ( isset( $rates['flat_rate:10'] ) ) unset( $rates['fedex:PRIORITY_OVERNIGHT'], $rates['fedex:FEDEX_2_DAY'],$rates['fedex:FEDEX_GROUND'] );
}
return $rates;
}
/** Ground Shipping Class Only **/
add_filter( 'woocommerce_package_rates', 'ground_shipping_class_only', 10, 2 );
function ground_shipping_class_only( $rates, $package ) {
$shipping_class_target = 1593; // shipping class ID
$in_cart = false;
foreach( WC()->cart->cart_contents as $key => $values ) {
if( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) {
$in_cart = true;
break;
}
}
if( $in_cart ) {
unset( $rates['fedex:PRIORITY_OVERNIGHT'], $rates['fedex:FEDEX_2_DAY'] ); // shipping method with ID (to find it, see screenshot below)
}
return $rates;
}
/** Freight Shipping Class Only **/
add_filter( 'woocommerce_package_rates', 'freight_shipping_class_only', 10, 2 );
function freight_shipping_class_only( $rates, $package ) {
$shipping_class_target = 193;
$in_cart = false;
foreach( WC()->cart->cart_contents as $key => $values ) {
if( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) {
$in_cart = true;
break;
}
}
if( $in_cart ) {
unset( $rates['fedex:PRIORITY_OVERNIGHT'], $rates['fedex:FEDEX_2_DAY'],$rates['fedex:FEDEX_GROUND'] );
isset( $rates['flat_rate:10'] ); //Not Showing
}
return $rates;
}
我是PHP的新手,所以我找到了大部分代码并对其进行了一些调整。从我的研究中,我发现许多未按运输类别设置运输方式的方法,而不是按运输类别设置运输方式的方法。感谢您的任何帮助,谢谢!