2014-12-27 10 views
7

Voglio aggiungere spese di spedizione tramite codice in woocommerce. ecco i miei risultati.Come aggiungere un costo di spedizione personalizzato in woocommerce?

Se il mio paese di spedizione è l'Australia, le spese di spedizione sono diverse e anche l'Australia è diversa. Ora, se il mio paese il trasporto è l'Australia e

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

Se il mio paese di spedizione è fuori dell'Australia e

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 

Così, come posso aggiungere spese di spedizione su misura secondo le mie esigenze di cui sopra, quando il trasporto change user paese dalla pagina di checkout. Ho provato sotto il codice ma funziona solo sul valore dell'ordine, come posso aggiungere il Paese di spedizione nel sotto codice nel plugin personalizzato.

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

}

risposta

7

meglio fare su misura plugin per spese di spedizione in cui è possibile utilizzare il gancio.
prima estendere classe 'WC_Your_Shipping_Method' nel vostro plugin personalizzato e rendere funzione come questa:

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

hey, funziona .. grazie mille per questo codice. Ho ottenuto la mia soluzione dalla funzione sopra –

+0

Ottima risposta, grazie mille. – howdoyouturnthison

0

previamente ad un metodo di spedizione in nome admin come 'MiaSped'

quindi aggiungere di seguito codice nel tuo tema di file 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

Ciao, Mahy so il motivo per cui si aggiunge il codice coupon? e come posso sapere quale paese di spedizione è selezionato nel codice sopra? –

+0

Questo in realtà non risponde alla domanda dell'OP. –

Problemi correlati