Porady

Ukrycie płatności dla danej metody wysyłki w WooCommerce

Domyślnie WooCommerce nie ma niestety opcji, która pozwalałaby płynnie dobierać rodzaj płatności do wysyłki, czyli w praktyce np. wyłączać opcje płatności przy wysyłce za pobraniem. Możemy jednak użyć prostego kodu, aby to skonfigurować. Instrukcję zamieszczamy poniżej. Prosimy o dokładne zapoznanie się z treścią, a przed wprowadzeniem modyfikacji wykonanie snapshota.

Uwaga! Musimy posiadać motyw potomny, aby wprowadzone zmiany zostały zachowane bezwzględu na późniejsze modyfikacje.

Opis elementów kodu

Nim przejdziemy do kopiowania i wklejania, poznajmy jak działa kod. Przede wszystkim zawiera on identyfikatory wysyłek oraz płatności:

Identyfikatory wysyłek używane przez WooCommerce:

flat_rate – płaska stawka
local_pickup – odbiór osobisty
free_shipping – darmowa dostawa

Numery występujące po danej metodzie płatności np. flat_rate: 1 określają kolejność danej metody wysyłki na liście w ustawieniach wysyłek. Flate_rate:1 to wysyłka kurierska, flate_rate:2 to wysyłka kurierska za pobraniem.

Identyfikatory płatności:

  • cod – płatność przy odbiorze
  • bacs – płatność zwykłym przelewem
  • cheque – płatność czekiem
  • paypal – płatność PayPalem

Kod do wklejania

Jak przeanalizujemy kod, wg wyżej wymienionych reguł, zauważymy, że dla opcji flare_rate:2 jest wyłączona opcja bacs - czyli płatność przelewem. Dzięki temu kupujący zobaczy tylko płatność przy odbiorze. Oczywiście kolejności pozycji musi zgadzać się z tymi w naszym sklepie.

/**
 * Filter payment gateways
 */
function my_custom_available_payment_gateways( $gateways ) {
	$chosen_shipping_rates = ( isset( WC()->session ) ) ? WC()->session->get( 'chosen_shipping_methods' ) : array();

		if ( in_array( 'flat_rate:1', $chosen_shipping_rates ) ) :
		unset( $gateways['cod'] );
		
		elseif ( in_array( 'flat_rate:2', $chosen_shipping_rates ) ) :
		unset( $gateways['bacs'] );
		


	endif;
	return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );

Skrypt ten należy umieścić w pliku „functions.php”, który znajduje się w katalogu z aktualnie działającym motywem. Ważne jest, aby był to katalog z motywem potomnym czyli child theme. Pamiętajmy, aby jednocześnie włączyć opcję wysyłki za pobraniem w ustawienia WooCommerce. Inaczej nasz skrypt nie zadziała prawidłowo.

Tagi:

Sprawdź nas bez ryzyka

Spróbuj za darmo przez 30 dni.
Bez płatności przez 30 dni, bez zobowiązań.
Jeśli Ci się spodoba, zostań.
Jeśli nie, żadnych problemów.

Okres testowy obejmuje usługę hostingu i darmową domenę techniczną. Zakup własnej domeny jest płatny zgodnie z cennikiem.

Subskrybuj
Powiadom o
guest
3 Komentarze
najstarszy
najnowszy oceniany
wojciech-zemek
wojciech-zemek
3 lat temu

lepiej dodać warunek, aby unikną błędów przy wejściu do kokpitu:

if ( !is_admin() ) add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );

Piotr
Piotr
3 lat temu

ostatnio w jednym ze sklepow na woodmarcie.. ten kod generuje blad w REST API.. nie rozumiem czemu, wykomentowanie zwraca rest API.. wordpress nie zwraca zadnych błędów w logach, apache tez.. czy komuś to się też trafiło???