Как условно скрыть способ оплаты в зависимости от страны доставки в блочной оформлении заказа WooCommerce?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как условно скрыть способ оплаты в зависимости от страны доставки в блочной оформлении заказа WooCommerce?

Сообщение Anonymous »

Я использую последнюю версию WooCommerce с блочной оплатой (т. е. WooCommerce Blocks), и мне нужно скрыть метод оплаты «Наложенным платежом» (COD) по умолчанию, если только страной доставки не является Германия (DE).
В классическом процессе оформления заказа этого можно легко добиться с помощью фильтра woocommerce_available_pay_gateways:

Код: Выделить всё

add_filter('woocommerce_available_payment_gateways', 'custom_restrict_cod_for_slovenia');
function custom_restrict_cod_for_slovenia($gateways) {
if (is_admin()) return $gateways;

if (isset($gateways['cod'])) {
$shipping_country = WC()->customer->get_shipping_country();
if ($shipping_country !== 'DE') {
unset($gateways['cod']);
}
}
return $gateways;
}
Это отлично работает при классической проверке, но НЕ работает при блочной оформлении заказа — метод наложенного платежа по-прежнему отображается, даже если страна доставки не Словения, и не обновляется динамически, когда пользователь меняет страну.
Я также пробовал подключиться к woocommerce_store_api_pay_methods следующим образом:

Код: Выделить всё

add_filter('woocommerce_store_api_payment_methods', 'custom_cod_for_si_only', 10, 2);
function custom_cod_for_si_only($gateways, $request) {
if (isset($gateways['cod'])) {
if (
isset($request['shipping_address']['country']) &&
$request['shipping_address']['country'] !== 'DE'
) {
unset($gateways['cod']);
}
}
return $gateways;
}
Но даже это не работает так, как ожидалось. Способ оплаты наложенным платежом по-прежнему отображается независимо от выбранной страны и не скрывается динамически при переключении страны при оформлении заказа.

Подробнее здесь: https://stackoverflow.com/questions/795 ... woocommerc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»