Jak ukryć metody płatności przy wysyłce za pobraniem w WooCommerce?

Spis treści
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.
Domyślne metody płatności przy tradycyjnej wysyłce z przedpłatą
Ukrycie pozostałych metod płatności przy wyborze wysyłki za pobraniem

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');
				
			
  1. 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.
  2. 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.

5. Potrzebujesz pomocy z wdrożeniem bądź przystosowaniem kodu? - Napisz do nas!

Inne wpisy z tej kategorii

jak dodac rabat na podstawie ilosci sztuk w woocommerce

Jak dodać rabat na podstawie ilości sztuk w WooCommerce?

najlepsze darmowe wtyczki woocommerce w 2024 roku

Top 15: Najlepsze darmowe wtyczki do sklepu WooCommerce w 2024 roku