Отключение способа оплаты BACS для способа доставки по локальной доставке

Как отключить BACS способ оплаты local delivery способ доставки?

Я включил приведенный ниже код в мой functions.php файл, но это не работает.
Может быть, кто-то может помочь мне с этим.

function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
// When 'local delivery' has been chosen as shipping rate
if ( in_array( 'local_delivery', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['bacs'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );

-1

Решение

Вы не далеко. Чтобы ваш код работал, вам нужно манипулировать данными в массиве chosen shipping methods чтобы получить только слизни в цикле foreach.

Вот код:

add_filter( 'woocommerce_available_payment_gateways', 'unset_bacs_for_local_delivery' );

function unset_bacs_for_local_delivery( $gateways ) {
// Initialising variables
$chosen_shipping_rates = array();

// Iterating and manipulating the "chosen shipping methods" to get the SLUG
foreach(WC()->session->get( 'chosen_shipping_methods' ) as $shipping_method) :
$shipping_arr = explode(':', $shipping_method);
$chosen_shipping_rates[] = $shipping_arr[0];
endforeach;

//When 'local delivery' has been chosen as shipping method
if ( in_array( 'local_delivery', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['bacs'] );
endif;

return $gateways;
}

Этот код протестирован и полностью функционален.

Код помещается в файл function.php вашей активной дочерней темы (или темы). Или также в любом файле плагина php.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]