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

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.

Kliknij i przetestuj hosting przez 30 dni za darmo
Subskrybuj
Powiadom o
guest
3 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
wojciech-zemek
wojciech-zemek
1 rok 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
10 miesięcy 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???