gpt4 book ai didi

php - 如何在 woocommerce 中添加自定义运费?

转载 作者:可可西里 更新时间:2023-11-01 12:35:30 25 4
gpt4 key购买 nike

我想在 woocommerce 中使用代码添加运费。这是我的要求。

如果我的送货国家是澳大利亚,那么运费会有所不同,澳大利亚以外地区的运费也会不同。现在,如果我的发货国家是澳大利亚,并且

1. if order value is < 100, then shipping charge is $100 
2. if order value is > 100, then shipping charge is $0.

如果我的送货国家/地区不在澳大利亚并且

 1. if order value is < 500, then shipping charge is $60
2. if order value is > 500 and < 1000, then shipping charge is $50
3. if order value is > 1000, then shipping charge is $0

那么,当用户从结帐页面更改送货国家/地区时,我如何根据上述要求添加自定义运费。我尝试了下面的代码,但它只适用于订单值(value),我如何在自定义插件的下面代码中添加送货国家/地区。

class WC_Your_Shipping_Method extends WC_Shipping_Method {
public function calculate_shipping( $package ) {
global $woocommerce;
if($woocommerce->cart->subtotal > 5000) {
$cost = 30;
}else{
$cost = 3000;
}
}
$rate = array(
'id' => $this->id,
'label' => $this->title,
'cost' => $cost,
'calc_tax' => 'per_order'
);

// Register the rate
$this->add_rate( $rate );

最佳答案

最好为可以使用 Hook 的运费制作自定义插件。
首先在您的自定义插件中扩展“WC_Your_Shipping_Method”类并制作如下函数:

public function calculate_shipping( $package ) {
session_start();
global $woocommerce;

$carttotal = $woocommerce->cart->subtotal;
$country = $_POST['s_country']; //$package['destination']['country'];

if($country == 'AU')
{
if($carttotal > 100){
$cost = 5;
}else{
$cost = 10;//10.00;
}
}
else
{
if($carttotal < 500){
$cost = 60;//60.00;
}else if($carttotal >= 500 && $carttotal <= 1000){
$cost = 50;//50.00;
}else if($carttotal > 1000){
$cost = 0;
}
}

$rate = array(
'id' => $this->id,
'label' => 'Shipping',
'cost' => $cost,
'calc_tax' => 'per_order'
);

// Register the rate
$this->add_rate( $rate );
}

关于php - 如何在 woocommerce 中添加自定义运费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com