wPHP - wordpress, woocommerce - kodowanie bez wtyczek
WordPress - zakoduj to sam w PHP
woocommerce darmowa wysyłka

Jak ukryć inne wysyłki przy darmowej dostawie

Grzegorz Chodacki30 maja 2018woocommerce woocommerce_package_rates

Temat wczoraj powrócił jak bumerang podczas konfiguracji nowego sklepu, który stawiamy na niemiecki rynek. Szczerze powiedziawszy zapomniałem, że robiłem to kilka razy dawno temu bo byłem przekonany o tym, że woocommerce ma już to zaimplementowane. W czym rzecz? Mamy kilka metod wysyłki w tym wysyłkę darmową, która pojawia nam się po dodaniu do koszyka towarów o określonej wartości. Załóżmy, że darmowa wysyłka od zakupów powyżej 200 zł. I dopóki klient nie załaduje do koszyka na tą kwotę to darmowa wysyłka mu się nie pojawia – do tego momentu mamy elegancko. No ale jak już tą wartość przekroczy, to niestety oprócz darmowej wysyłki ma do wyboru pozostałe formy dostawy.

Logiczne lub nie, bo być może darmowa dostawa trwa tydzień a płatna będzie jutro i klient woli jednak dołożyć te 15 zł, ale nie o to w tym temacie chodzi. Zakładamy, że darmowa wysyłka jest równie szybka co najszybsza płatna i w tym momencie pokazując klientowi pozostałe opcje wprowadzamy go w konsternację. Niepotrzebnie wydłużamy proces zakupowy i budujemy zbędne napięcie, które nie pomaga w osiągnięciu celu jakim jest wciśnięcie guzika „KUPUJĘ I PŁACĘ”.

W internecie można znaleźć wiele rozwiązań tego problemu, jak zwykle okazuje się, że to kilka linijek kodu a nie 5 wtyczek. Ale ja chciałbym podejść do tematu trochę szerzej i bardziej nietypowo. Na konkretnym przykładzie. A co jeśli klient oprócz darmowej wysyłki oferuje odbiór własny (logicznym jest zerowy koszt odbioru własnego), a co jeśli ma np. 2 sklepy stacjonarne, gdzie można towar odebrać?

Za problem odpowiada filtr woocommerce_package_rates

add_filter('woocommerce_package_rates', 'ukryj_inne_gdy_darmowa', 10, 2); 

function ukryj_inne_gdy_darmowa($rates, $package) { 
 if ( isset( $rates['free_shipping'] ) ) { 
 $darmowa_wysylka = $rates['free_shipping']; $rates = array(); // tutaj zerujemy tablicę z wysyłkami 
 $rates['free_shipping'] = $darmowa_wysylka; //tworzymy nową tylko z jedną zmienną 
 } 
 return $rates; 
}

No dobra a teraz obiecany kod, gdy mamy jeszcze punkty odbioru osobistego czyli local_pickup

add_filter('woocommerce_package_rates', 'pokaz_tylko_darmowe_wysylki', 10, 2);
function pokaz_tylko_darmowe_wysylki($rates, $package) {
 $darmowa = 0;
 $odbior_osobisty = 0;

 foreach($rates as $key => $value) {
 $key_part = explode(":", $key);
 $method_title = $key_part[0];
 if ('free_shipping' == $method_title) { // sprawdzamy czy darmowa wysyłka istnieje
 $darmowa = 1;
 $free_shipping = $rates[$key];
 $free_key = $key;
 }
 if ('local_pickup' == $method_title) {// sprawdzamy czy jest odbiór osobisty
 if ($odbior_osobisty=='0') {
 $odbior_osobisty = 1;
 $local_pickup_zg = $rates[$key];
 $pickup_key_zg = $key;}
 else {
 $odbior_osobisty = 2;
 $local_pickup_ns = $rates[$key];
 $pickup_key_ns = $key; }
 }
 }
 if ($darmowa == 1) {
 $rates = array();
 $rates[$free_key] = $free_shipping;
 if ($odbior_osobisty == 2) {
 $rates[$pickup_key_ns] = $local_pickup_ns;
 $rates[$pickup_key_zg] = $local_pickup_zg;
 }
 }
 return $rates;
}

I gotowe, takie rozwiązanie z powodzeniem udało się zastosować w sklepie etraper.pl

Dostępne warianty w widoku kategorii Klient użył kodu rabatowego – pokaż mu obniżone ceny w sklepie

Related Posts

woocommerce

Jak wyłączyć wymagane pola na stronie zamówienia woocommerce

Czasami zachodzi potrzeba wyłączenia, niektórych wymaganych pól na stronie zamówienia. Np. mamy tego typu wysyłkę, że klient nie chce podawać imienia i nazwiska. Albo chce dyskretnie na numer paczkomatu, bez podawania adresu domowego. Oczywiście możemy zrobić to za pomocą wtyczki Checkout Field Editor, ale jest ona komercyjna i bez corocznych aktualizacji potrafi popsuć zaplecze. Dlatego […]

layout, woocommerce

Wyszukiwanie postów tylko po tytułach

Temat wydawał się dość prosty, a jednak zajął mi trochę czasu. Wujek Google wcale nie jest tak łaskawy w odpowiedzi na pytanie co zrobić aby wyniki wyszukiwania w wordpress obejmowały jedynie szukanie po tytułach postów (produktów) a nie po całej treści (opisie).

optymalizacja, woocommerce

Jak przyspieszyć stronę wyłączając odświeżanie koszyka woocoomerce

Bardzo często zdarza się, że nasza strona z woocommerce działa wolno. Narzędzia do testowania prędkości typu GTMetrix, często pokazują, że wpływ na prędkość ładowania strony może mieć skrypt wc-ajax=get_refreshed_fragments. Generuje on opóźnienia i obciążenie serwera. Do czego jest on potrzebny, czy jest potrzebny i jak go wyłączyć?

Ostatnie wpisy

  • Automatyczne aktualizacje wordpressa
  • Jak wyłączyć wymagane pola na stronie zamówienia woocommerce
  • Jak wstawić kod HTML lub shortcode w opisach kategorii produktów
  • Jak wyłączyć odzyskiwanie hasła
  • Pobieranie aktualnego kursu walut przez API NBP

Najnowsze komentarze

    Archiwa

    • kwiecień 2023
    • wrzesień 2022
    • lipiec 2022
    • kwiecień 2022
    • marzec 2022
    • październik 2021
    • wrzesień 2021
    • kwiecień 2021
    • marzec 2021
    • grudzień 2020
    • lipiec 2020
    • marzec 2020
    • luty 2020
    • styczeń 2020
    • maj 2019
    • luty 2019
    • listopad 2018
    • sierpień 2018
    • czerwiec 2018
    • maj 2018
    • marzec 2018
    • luty 2018
    • styczeń 2018

    Kategorie

    • dla admina
    • layout
    • optymalizacja
    • woocommerce

    Meta

    • Zaloguj się
    • Kanał wpisów
    • Kanał komentarzy
    • WordPress.org
    Strony na Wordpress - uKONTENTowani.pl
    TO NIE JEST STRONA DLA INSTALATORÓW WTYCZEK