2014-12-27 17 views
7

Chcę dodać opłatę transportową za pomocą kodu w woocommerce. tutaj są moje wymagania.Jak dodać niestandardową opłatę transportową w woocommerce?

Jeśli moim krajem wysyłki jest Australia, opłata za wysyłkę jest inna i poza Australią również jest inna. teraz, czy moja przesyłka kraj Australia i

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

Jeśli moja przesyłka kraj jest poza Australią i

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 

Tak, jak mogę dodać własny ładunek wysyłki jak za moich powyższych wymagań, gdy zmiana użytkownik wysyłka kraj ze strony kasy. Próbowałem pod kodem, ale działa tylko na wartości zamówienia, jak mogę dodać kraj wysyłki w poniższym kodzie w niestandardowej wtyczce.

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); 

}

Odpowiedz

7

lepiej, aby zwyczaj wtyczka do ładowania wysyłki, w której możesz użyć haka.
pierwsze rozszerzyć klasę „WC_Your_Shipping_Method” w niestandardowym wtyczki i uczynić funkcję tak:

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); 
} 
+0

hej, działa ... bardzo dziękuję za ten kod. Mam rozwiązanie z powyższej funkcji –

+0

Świetna odpowiedź, wielkie dzięki. – howdoyouturnthison

0

najpierw dokonać sposobu wysyłki w SIO Nazwa jako 'MyShip'

następnie dodać poniżej kodu w pliku motywu functions.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(); 

} 
+0

Cześć, Mahy wiem dlaczego dodać kod kuponu? i skąd mogę wiedzieć, który kraj wysyłki został wybrany w powyższym kodzie? –

+0

To naprawdę nie odpowiada na pytanie OP. –

Powiązane problemy