想要使用woo commerce中的代码来添加运费。这是我的要求。
如果订单的最大重量是500克,并且:如果订单值是< = 89.99美元,如果订单价值为90.00美元,则运费为30.00美元。 $ 178.99,如果订单价值为179.00美元,则运费为32.50美元。 $ 269.99,如果订单价值为270.00美元,则运费为35.00美元。 359.99美元,如果订单价值为360.00美元,则运费为37.50美元。 650.00美元,然后运费是40.00美元
如果订单的最大重量大于或等于500克 并且:如果订单价值超过$ 650.00,则运费为$ 70
那么,我如何根据我在代码
下面尝试的上述要求添加自定义运费但它导致网站空白。
add_action('woocommerce_before_cart_table', 'calculate_shipping');
function calculate_shipping( $package ) {
global $woocommerce;
if($woocommerce->cart->cart_contents_weight > 500) {
if($woocommerce->cart->subtotal >= 89){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 90 && $woocommerce->cart->subtotal <= 178 ){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 179 && $woocommerce->cart->subtotal <= 269){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 270 && $woocommerce->cart->subtotal <= 359){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 360 && $woocommerce->cart->subtotal <= 650){
$cost = 30;
}
}else{
if($woocommerce->cart->subtotal >= 650){
$cost = 70;
}
}
$rate = array(
'id' => $this->id,
'label' => $this->title,
'cost' => $cost,
'calc_tax' => 'per_order'
);
$this->add_rate( $rate );
}
答案 0 :(得分:0)
最后我解决了它:
添加新的自定义统一费率并隐藏默认统一费率。
这是我在function.php文件中添加的函数
add_action( 'woocommerce_flat_rate_shipping_add_rate', 'add_another_custom_flat_rate', 10, 2 );
function add_another_custom_flat_rate( $method, $rate ) {
$new_rate = $rate;
$new_rate['id'] .= ':' . 'custom_rate_name';
$new_rate['label'] = 'Shipping and handling';
global $woocommerce;
//echo 'weight'.$woocommerce->cart->cart_contents_weight;
//echo 'price'.$woocommerce->cart->subtotal;
if($woocommerce->cart->cart_contents_weight <= 500) {
if($woocommerce->cart->subtotal >= 89){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 90 && $woocommerce->cart->subtotal <= 178 ){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 179 && $woocommerce->cart->subtotal <= 269){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 270 && $woocommerce->cart->subtotal <= 359){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 360 && $woocommerce->cart->subtotal <= 650){
$cost = 30;
}
if($woocommerce->cart->subtotal >= 650){
$cost = 70;
}
}else{
if($woocommerce->cart->subtotal >= 650){
$cost = 70;
}
}
$new_rate['cost'] = $cost; // Add $2 to the cost
$method->add_rate( $new_rate );
}