Jak ukryć metody wysyłki WooCommerce w określonych warunkach?

Opublikowany: 2020-06-15

Metoda wysyłki to usługa i opłata, którą klient widzi w kasie podczas zakupu dowolnego przedmiotu. Będzie to niezbędna opcja dla sklepu eCommerce, zapewniająca płynną dostawę .

Jako rozwiązanie eCommerce, WooCommerce zapewnia również metody wysyłki, takie jak bezpłatna wysyłka , stawka ryczałtowa i odbiór lokalny , które można skonfigurować dla różnych stref wysyłki w zależności od lokalizacji. Na przykład opcja Bezpłatna dostawa jest dostępna tylko dla określonego zakresu kodów pocztowych, które znajdują się w pobliżu lokalizacji sklepu, a opcja Stała ryczałtowa jest dostępna dla innych części stref dostawy.

Default Shipping Methods
Domyślne metody wysyłki

Opcje wysyłki oparte na lokalizacji można łatwo osiągnąć za pomocą wtyczki, ale w pewnych warunkach, w których lokalizacja nie odgrywa kluczowej roli, właścicielom sklepów staje się bardzo trudno osiągnąć to. Warunki mogą być następujące:

  1. Niektóre metody wysyłki, takie jak bezpłatna wysyłka, nie powinny być dostępne, jeśli waga zamówienia przekracza określoną liczbę funtów lub kg.
  2. Dostępność niektórych metod wysyłki zależy również od ilości lub ceny całego zamówienia. Na przykład, jeśli suma zamówienia przekracza 250 USD, dostępna powinna być tylko bezpłatna metoda wysyłki i żadne płatne metody wysyłki nie powinny być dostępne.

Może istnieć więcej takich warunków, dla których metody wysyłki muszą być pokazane lub ukryte podczas kasy, ale w tym poście wyjaśnimy powyższe 2. Aby to osiągnąć w swoim sklepie WooCommerce, możesz dodać fragment kodu lub użyć dowolnej stawki wysyłki dostępne wtyczki .

Korzystanie z fragmentu kodu

Weźmy przykład warunku 1, o którym mowa powyżej, gdzie bezpłatna wysyłka nie powinna być dostępna, jeśli waga zamówienia przekracza 5 kg. Możesz to osiągnąć, dodając poniższy kod w pliku functions.php aktualnie aktywnego motywu.

Uwaga: Te zmiany można nadpisać aktualizacją bieżącego motywu, dlatego zaleca się utworzenie motywu potomnego i dodanie wymaganych fragmentów kodu w pliku functions.php motywu potomnego. Możesz też użyć wtyczki Code Snippets, aby dodać niestandardowe fragmenty.

 /** 
 * Ukryj bezpłatną wysyłkę, gdy waga zamówienia przekracza 10 kg. 
 * 
 * @param array $rates Tablica stawek znalezionych dla pakietu. 
 * @tablica powrotu 
 */ 
funkcja ts_hide_free_shipping_for_order_weight( $stawki, $pakiet ) { 
    $order_weight = WC()->cart->get_cart_contents_weight(); 
 
    if ( $order_weight > 5 ) { 
        foreach( $rates as $rate_id => $rate_val ) { 
            if ( 'free_shipping' === $rate_val->get_method_id() ) { 
                unset( $rates[ $rate_id ] );
            } 
        } 
    } 
    zwrot $stawki; 
} 

add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );

Tutaj filtr woocommerce_package_rates jest używany do modyfikowania obliczonych stawek w koszyku. Zawiera wszystkie stawki wysyłki, które będą dostępne po dodaniu produktu do koszyka. Dlatego musimy odznaczyć wymaganą metodę wysyłki, która w naszym przypadku będzie Darmowa wysyłka z tablicy zwracanej z tego filtra, jeśli waga zamówienia jest większa niż 5kgs.

Strona produktu:

Product with 6kg weight
Produkt o wadze 6 kg

Strona koszyka z metodami wysyłki:

Free shipping is not available for the product with weight more than 5kg
Bezpłatna wysyłka nie jest dostępna dla produktu o wadze powyżej 5kg

Innym przykładem ukrywania metod wysyłki w koszyku WooCommerce byłoby zezwolenie tylko na bezpłatną wysyłkę podczas realizacji zakupu, gdy suma zamówienia przekracza 250 USD. Można to osiągnąć dodając poniższy kod w pliku functions.php.

 /**
 * Ukryj stawki wysyłki, gdy suma zamówienia przekracza 250 USD.
 *
 * @param array $rates Tablica stawek znalezionych dla pakietu.
 * @tablica powrotu
 */
funkcja ts_hide_shipping_for_order_total ( $ stawki ) {
  $wolny = tablica();

  $order_total = WC()->koszyk->get_subtotal();
  
  if ( $ suma_zamówień > 250 ) {
    foreach ( $rates as $rate_id => $rate) {
      if ( 'free_shipping' === $rate->get_method_id() ) {
        $darmowy[ $rate_id ] = $stawka;
      }
    }
  }
  zwrócić ! pusty ( $za darmo ) ? $darmowe : $stawki;
}
add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );

W tym przypadku, gdy suma zamówienia przekracza 250 USD, z filtra zwracana jest tablica z tylko bezpłatnymi metodami wysyłki, w przeciwnym razie zwracane są wszystkie stawki wysyłki.

Hide Shipping Rate when Order total is more than $250
Ukryj koszt wysyłki, gdy suma zamówienia przekracza 250 USD

W powyższych przykładach przyjęliśmy odniesienie do metody bezpłatnej wysyłki, więc użytym identyfikatorem metody jest free_shipping. W przypadku zmiany innych metod wysyłki identyfikatory metody to:

Odbiór lokalny: local_pickup
Stawka ryczałtowa: flat_rate

Funkcja get_method_id() pobiera identyfikator metody tylko dla 3 metod dla wszystkich stref wysyłki, a nie dla pojedynczej metody pojedynczej strefy wysyłki, więc ukryje wszystkie stawki ryczałtowe, odbiór lokalny lub metody bezpłatnej wysyłki dostępne podczas realizacji transakcji. Ale jeśli chcesz ukryć konkretną metodę wysyłki, musisz użyć kombinacji identyfikatora metody wysyłki i identyfikatora instancji.

Na przykład 'flat_rate:3', gdzie 3 jest unikalnym identyfikatorem instancji przechowywanym dla każdej metody wysyłki dla strefy w bazie danych. Możesz znaleźć identyfikator instancji metody wysyłki, klikając prawym przyciskiem myszy metodę wysyłki i sprawdzając element w narzędziu programisty w przeglądarce.

Instance ID

Korzystanie z różnych rozszerzeń WooCommerce do metod wysyłki

Dostępnych jest wiele płatnych lub bezpłatnych rozszerzeń umożliwiających konfigurowanie metod wysyłki dla różnych warunków. Niektóre z najczęściej używanych wtyczek to:

Płatne wtyczki:

  1. Tabela stawek wysyłki przez WooCommerce : Ta wtyczka rozszerza domyślne opcje wysyłki WooCommerce, dając Ci wysoce konfigurowalne opcje wysyłki.
  2. Zaawansowana wtyczka ryczałtowej wysyłki dla WooCommerce : Ta wtyczka pomoże Ci skonfigurować stawki wysyłki w Twoim sklepie na podstawie zaawansowanych reguł wysyłki.
  3. Wtyczka WooCommerce Advance Shipping autorstwa Jeroena Sormaniego : Ta wtyczka umożliwia włączenie metod wysyłki podczas realizacji transakcji na podstawie ustalonych reguł. Reguły można ustawić dla różnych szczegółów koszyka, szczegółów produktu lub różnych danych użytkownika .
  4. Flexible Shipping Pro for WooCommerce by WP Desk : Ta wtyczka umożliwia włączenie metody wysyłki w oparciu o konkretny przedmiot, pozycję koszyka, zasady dotyczące ceny lub wagi .

Darmowe wtyczki:

Niektóre z powyższych wtyczek mają również bezpłatną wersję z ograniczonymi funkcjami. Oni są:

  1. WooCommerce Advanced Free Shipping autorstwa Jeroena Sormaniego: Jest to darmowa wersja wtyczki WooCommerce Advanced Shipping. Jedyną różnicą w przypadku obu wtyczek jest to, że ta wtyczka pozwala tylko na bezpłatną wysyłkę dla ustalonych reguł, a płatna wtyczka zezwala na wszystkie metody wysyłki.
  2. Flexible Shipping for WooCommerce by WP Desk : Jest to darmowa wersja wtyczki Flexible Shipping Pro for WooCommerce. Umożliwia ustawienie metod wysyłki tylko dla ceny i wagi.

Szczegółowe wyjaśnienie wyżej wymienionych wtyczek znajdziesz w tym poście.

Wniosek

Jak widzieliśmy w tym poście, opcje wysyłki z wyprzedzeniem można uzyskać, po prostu dodając fragment kodu na swojej stronie internetowej lub korzystając z różnych dostępnych wtyczek. Możesz więc wypróbować podany fragment kodu lub poeksperymentować z dowolną z wtyczek i dać nam znać, czy jest to korzystne dla Twojego sklepu WooCommerce.