В классическом процессе оформления заказа этого можно легко добиться с помощью фильтра 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
Мобильная версия