- GreatSite.pl
- Kategoria: WooCommerce
Jak ukryć metody płatności przy wysyłce za pobraniem w WooCommerce?
W tym poradniku pokażemy krok po kroku, jak wdrożyć kod PHP, który ukryje niepotrzebne i wprowadzające w błąd metody płatności WooCommerce w przypadku wyboru wysyłki „Za pobraniem”. Wyjaśnimy również, jak dostosować ten kod do swoich potrzeb, aby zapewnić pełną zgodność z konfiguracją Twojego sklepu. Takie rozwiązanie jest szczególnie przydatne, gdy chcemy uprościć proces zakupowy, uniknąć błędów podczas składania zamówień i zapewnić klientowi klarowną finalizację zakupu w zależności od wybranej opcji wysyłki.
Kod został przystosowany do działania z najnowszą wersją WooCommerce 9.x i umożliwia dynamiczne sprawdzanie wybranej metody wysyłki. Dzięki temu mechanizmowi możemy automatycznie ograniczyć metody płatności dostępne na stronie zamówienia, co przekłada się na lepszą kontrolę nad procesem sprzedaży i jego skuteczność.
1. Jak działa kod do ukrywania innych metod płatności przy wysyłce za pobraniem?
Kod, który znajdziesz w dalszej części poradnika, umożliwia automatyczne ukrycie wszystkich niepotrzebnych metod płatności np. Przelewy24 czy PayU w przypadku, gdy klient wybierze wysyłkę z opcją za pobraniem. Dzięki temu rozwiązaniu proces zakupowy staje się bardziej przejrzysty, co minimalizuje ryzyko błędów, rezygnacji z zamówienia czy porzucania koszyka. Całość działa w pełni automatycznie – klient nie musi podejmować dodatkowych działań, a odpowiednia metoda płatności jest dynamicznie ustawiana na podstawie wybranej wysyłki.
- Dynamiczne monitorowanie wybranej wysyłki
Kod sprawdza, czy klient wybrał metodę wysyłki za pobraniem (zdefiniowaną w kodzie przez stałą NAZWA_WYSYLKI). W momencie zmiany wysyłki na stronie zamówienia odpowiedni fragment kodu zapisuje tę informację w sesji WooCommerce, co pozwala na dalsze filtrowanie metod płatności. - Filtrowanie dostępnych metod płatności
Funkcja gr8_filtruj_platnosci analizuje dostępne metody płatności i pozostawia jedynie tę, której etykieta odpowiada wartości NAZWA_PLATNOSCI czyli płatności za pobraniem. Wszystkie inne metody takie jak np. Przelewy24, Stripe czy PayU zostają automatycznie usunięte z listy. - Automatyczne aktualizowanie sesji
Kod wykorzystuje mechanizm sesji WooCommerce, dzięki czemu zmiany w dostępnych metodach płatności są od razu widoczne na stronie zamówienia, bez potrzeby odświeżania strony. - Elastyczność i personalizacja
Zarówno nazwa wysyłki, jak i metoda płatności mogą być łatwo dostosowane w kodzie poprzez stałe NAZWA_WYSYLKI i NAZWA_PLATNOSCI. Dzięki temu właściciele sklepów mogą szybko zaadaptować rozwiązanie do swoich potrzeb.
2. Jak wdrożyć kod który ukryje metody płatności dla wskazanej wysyłki w WooCommerce?
Aby wdrożyć poniższe rozwiązanie w swoim sklepie WooCommerce, należy dodać cały kod do pliku functions.php w motywie potomnym. Jeśli jeszcze nie korzystasz z motywu potomnego, skorzystaj z naszego poradnika, jak stworzyć motyw potomny.
Otwórz edytor plików motywu w WordPress
Przejdź do Wygląd > Edytor plików motywu w panelu WordPress. Upewnij się, że masz aktywny motyw potomny, a następnie wybierz plik Funkcje motywu (functions.php).Dodaj kod do pliku functions.php
Przewiń zawartość pliku na sam dół, wklej przygotowany kod i zapisz zmiany, klikając Aktualizuj plik.Dostosuj kod do swoich potrzeb
Korzystając z punktu trzeciego przypisz w definicjach do zmiennych dokładną nazwę wysyłki dla której chcesz aby ukrywane były metody płatności oraz nazwę tej która ma zostać.- Sprawdź działanie kodu
Wyczyść pamięć podręczną i przetestuj czy dla ustawionej wysyłki (czyli dla tej za pobraniem) dostępna będzie tylko jedna metoda płatności a pozostałe zostaną ukryte. Sprawdź czy dzieje się to automatycznie i nie występują błędy.
/**
* Autor: Greatsite.pl
* Funkcjonalność: Ukrywanie pozostałych metod płatności przy wysyłce za pobraniem.
*/
define('NAZWA_WYSYLKI', 'Kurier za pobraniem');
define('NAZWA_PLATNOSCI', 'Płatność za pobraniem');
add_action('woocommerce_after_shipping_rate', 'gr8_sprawdz_wysylke', 10, 2);
add_filter('woocommerce_available_payment_gateways', 'gr8_filtruj_platnosci');
add_action('woocommerce_checkout_update_order_review', 'gr8_zmiana_wysylki');
function gr8_sprawdz_wysylke($metoda, $index) {
if (!is_null(WC()->session) && $metoda instanceof WC_Shipping_Rate) {
$wybrane_wysylki = WC()->session->get('chosen_shipping_methods');
$wybrana_metoda = isset($wybrane_wysylki[0]) ? $wybrane_wysylki[0] : '';
$aktualna_metoda = $metoda->get_id();
if ($metoda->get_label() === NAZWA_WYSYLKI && $wybrana_metoda === $aktualna_metoda) {
WC()->session->set('pobranie_wybrane', true);
} else if ($wybrana_metoda === $aktualna_metoda) {
WC()->session->set('pobranie_wybrane', false);
}
}
}
function gr8_zmiana_wysylki($post_data) {
if (!empty($post_data)) {
parse_str($post_data, $dane);
if (isset($dane['shipping_method'][0])) {
$wybrana_metoda = $dane['shipping_method'][0];
$pakiety = WC()->shipping()->get_packages();
if (!empty($pakiety[0]['rates'])) {
foreach ($pakiety[0]['rates'] as $metoda) {
if ($metoda->get_id() === $wybrana_metoda && $metoda->get_label() === NAZWA_WYSYLKI) {
WC()->session->set('pobranie_wybrane', true);
return;
}
}
}
WC()->session->set('pobranie_wybrane', false);
}
}
}
function gr8_filtruj_platnosci($dostepne_platnosci) {
if (!is_admin() &&
!is_null(WC()->session) &&
WC()->session->get('pobranie_wybrane') &&
is_array($dostepne_platnosci)) {
foreach ($dostepne_platnosci as $id_platnosci => $platnosc) {
if ($platnosc->get_title() !== NAZWA_PLATNOSCI) {
unset($dostepne_platnosci[$id_platnosci]);
}
}
}
return $dostepne_platnosci;
}
3. Jak dostosować i ukryć metody płatności przy wysyłce za pobraniem w sklepie WooCommerce?
Wiesz już, jak działa kod oraz jak go dodać do pliku functions.php. Teraz pozostał ostatni, ale bardzo prosty krok – dostosowanie go do potrzeb Twojego sklepu. Wystarczy jedynie zmienić wartości w sekcji define. Oto, jak to zrobić:
define('NAZWA_WYSYLKI', 'Kurier za pobraniem');
define('NAZWA_PLATNOSCI', 'Płatność za pobraniem');
- Dostosowanie NAZWA_WYSYLKI
W miejscu „Kurier za pobraniem” wprowadź dokładną nazwę swojej metody wysyłki, dla której kod ma działać. Tę nazwę znajdziesz w ustawieniach wysyłki WooCommerce, w sekcji „Metody wysyłki” lub w podsumowaniu zamówienia. Upewnij się, że nazwa jest wpisana dokładnie tak, jak jest zapisana w systemie, włącznie z wielkością liter i znakami specjalnymi. - Dostosowanie NAZWA_PLATNOSCI
W miejscu „Płatność za pobraniem” podaj tytuł(nazwę) swojej metody płatności, która ma pozostać aktywna. My wykorzystaliśmy domyślnie wbudowaną opcję „Płatność za pobraniem” dostępną w WooCommerce. Aby ją skonfigurować:
– Przejdź do zakładki WooCommerce > Ustawienia > Płatności.
– Włącz metodę „Za pobraniem” i nadaj jej odpowiednią nazwę w polu Tytuł, np. „Płatność przy odbiorze”. Ta nazwa będzie widoczna dla klientów w podsumowaniu zamówienia i to ją musisz wprowadzić jako wartość stałej do definicji.
4. Podsumowanie
Opisana w tym poradniku modyfikacja umożliwia automatyczne ukrycie wszystkich metod płatności poza wybraną, gdy klient zdecyduje się na wysyłkę za pobraniem. Działanie opiera się na dokładnych nazwach metod płatności i wysyłki, które można łatwo dostosować w sekcji define. Rozwiązanie to minimalizuje ryzyko błędów w zamówieniach i upraszcza proces składania zamówienia, co przekłada się na mniejszą liczbę porzuconych koszyków.
Kod znajdzie zastosowanie w sklepach, które oferują różne metody wysyłki, ale chcą zachować pełną kontrolę nad dostępnymi płatnościami. Przed zastosowaniem go na stronie produkcyjnej, zalecamy przetestowanie w środowisku testowym aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.