WooCommerce问题:启用一种运输方式到运输类

时间:2018-07-10 21:49:39

标签: php wordpress woocommerce shipping fedex

我遇到一个问题,试图将一种运输方法添加到我以前根据重量删除的运输类中。

当购物车重量超过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的新手,所以我找到了大部分代码并对其进行了一些调整。从我的研究中,我发现许多未按运输类别设置运输方式的方法,而不是按运输类别设置运输方式的方法。感谢您的任何帮助,谢谢!

0 个答案:

没有答案