基于Woocommerce购物车小计的分层运输

时间:2018-01-26 06:48:33

标签: php wordpress woocommerce cart shipping

在Woocommerce中,我需要根据购物车小计设置运费如下:

  • 如果价格低于20欧元,运费为5,90欧元,
  • 如果价格从20欧元起低于30欧元,则运费为4,90欧元
  • 如果价格从30欧元起,则运费为3,90欧元。

我有非常基本的PHP知识,并修改了我找到的代码片段。

这是我的代码:

add_filter('woocommerce_package_rates','bbloomer_woocommerce_tiered_shipping', 10, 2 );
function bbloomer_woocommerce_tiered_shipping( $rates, $package){
    $threshold1 = 20;
    $threshold2 = 30;
    if ( WC()->cart->subtotal < $threshold1 ){
        unset( $rates['flat_rate:5'] );
        unset($rates['flat_rate:6']);
    } elseif((WC()->cart->subtotal>$threshold1)and(WC()->cart->subtotal<$threshold2) ) {
        unset( $rates['flat_rate:1'] );
        unset( $rates['flat_rate:6'] ); 
    } elseif((WC()->cart->subtotal > $threshold2) and (WC()->cart->subtotal > $threshold1) ) {
        unset( $rates['flat_rate:1'] );
        unset( $rates['flat_rate:5'] );  
    }
    return $rates;
}

这似乎有效,但有时候(我没有想出触发器!)它没有,并且所有三种运输方法都显示在购物车中。我想我注意到它只发生在用户登录时,但我并不是100%肯定。

如果我的功能是正确的,如果我需要更改或改进任何内容,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我稍微重新审视了你的代码。您应该尝试以下方法:

printGrades(gradeA, 'A');
printGrades(gradeB, 'B');
printGrades(gradeC, 'C');
printGrades(gradeD, 'D');
printGrades(gradeF, 'F');

代码进入活动子主题(或活动主题)的function.php文件。

它应该按预期运行。

  

使其与#34;免费送货&#34;方法,您必须停用&#34;免费送货需要...&#34; 选项(设置为&#34; N / A& #34;

  

有时您需要刷新送货缓存:

     

保存此代码并清空购物车后,请转到您的送货设置。在您的送货区域中,禁用保存并重新启用保存送货方式。