Как добавить плату за доставку в woocommerce?
Я хочу добавить стоимость доставки, используя код в woocommerce. вот мой reuirements.
Если моя страна доставки Австралия, то стоимость доставки отличается и за пределами Австралии также отличается. теперь, если моя страна доставки Австралия и
1. if order value is < 100, then shipping charge is 0
2. if order value is > 100, then shipping charge is .
Если моя страна доставки за пределами Австралии и
1. if order value is < 500, then shipping charge is
2. if order value is > 500 and < 1000, then shipping charge is
3. if order value is > 1000, then shipping charge is
Итак, как я могу добавить плату за доставку в соответствии с моими выше требованиями, когда пользователь меняет страну доставки со страницы оформления заказа. Я пробовал ниже кода, но он работает только на значении заказа, как я могу добавить страну доставки ниже кода в пользовательский плагин.
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 );
}
2 ответов
лучше сделать пользовательский плагин для оплаты доставки, где вы можете использовать крюк.
Сначала расширьте класс '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 );
}
сначала сделайте метод доставки в имени администратора как "myship"
затем добавьте ниже код в функции темы.файл php
add_action('woocommerce_before_cart_table', 'discount_when_produts_in_cart');
function discount_when_produts_in_cart( ) {
global $woocommerce;
$coupon_code = 'myship';
if( $woocommerce->cart->get_cart_total() > 500 ) {
$coupon_code = 'myship';
}
else
{
$woocommerce->cart->remove_coupons(sanitize_text_field($coupon_code));
$woocommerce->clear_messages();
}