2015-12-22 10 views
5

Poniższy kod pozwoli bezpłatną wysyłkę do konkretnego produktu:woocommerce kasa - jak dać darmową wysyłkę dla konkretnego adresu

function wcs_my_free_shipping($is_available) { 
    global $woocommerce; 

    // set the product ids that are eligible 
    $eligible = array('360'); 

    // get cart contents 
    $cart_items = $woocommerce->cart->get_cart(); 

    // loop through the items looking for one in the eligible array 
    foreach ($cart_items as $key => $item) { 
     if(in_array($item['product_id'], $eligible)) { 
      return true; 
     } 
    } 

    // nothing found return the default value 
    return $is_available; 
    } 
    add_filter('woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20); 

Co chciałbym zrobić, to pozwolić bezpłatną wysyłkę nie na produkt, ale dla konkretnej kombinacji kodu ulicy i kodu pocztowego w adresie dostawy. Dowiedziałem się, jak to sprawdzić dla zalogowanego użytkownika, ale nie można znaleźć odpowiednich zmiennych, które mają te informacje w kasie. Każda pomoc będzie wielce ceniona.

Dzięki z góry, -Ben

+0

zmienić 'foreach() {}' z logiki sprawdzania adres. "return true" oznacza darmową wysyłkę. – Reigel

Odpowiedz

0

Są dostępne w już woocommerce strefy wysyłkę. Dla każdej konkretnej strefy możesz ustawić metodę wysyłki "Stawka ryczałtowa" lub "Przesyłka bezpłatna". Możesz to sprawdzić w Woocommerce-> Ustawienia. Znajdź kartę Przesyłka.

Screenshot for shipping tab

0

Tak można, istnieje dodatkowy parametr można przekazać do tej nazwy hak $ opakowaniu.
dla np.

add_filter('woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20,2); 

function wcs_my_free_shipping($is_available, $package){ 
//Your code for free shipping for a selected address found in $package 
return $is_available 
} 

$ pakiet zawiera podany adres, więc można to wykorzystać, aby zastosować bezpłatną wysyłkę do wybranych kodów pocztowych lub ulic

Powiązane problemy