2013-06-09 3 views
5

В этой установке WooCommerce, у меня есть 2 способа оплаты, Paypal и Наложенной Доставка.Как скрыть способ оплаты в WooCommerce, основанной на почтовом индексе

Теперь как можно Наличные деньги при доставке быть скрытыми/отключенными только для определенных почтовых индексов.

Это код, который я нашел на Gist

// Disable gateway based on country 
function payment_gateway_disable_country($available_gateways) { 
    global $woocommerce; 
    if (isset($available_gateways['ccavenue']) && $woocommerce->customer->get_country() <> 'IN') { 
     unset( $available_gateways['ccavenue']); 
    } else if (isset($available_gateways['paypal']) && $woocommerce->customer->get_country() == 'IN') { 
     unset($available_gateways['paypal']); 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 

Gist Link

+0

Вы нашли способ сделать это? Я хотел бы сделать это, а также взимать дополнительную плату за ХПК. – Chirag

+0

Этот плагин делает все, что вам нужно: http://gremlin.io/shop/woocommerce-plugins/restrict-check-cod-payment-method-zip-pin-codes-woocommerce –

ответ

7

Чтобы отключить/скрытый "Наложенный Доставка", Разместите этот код в function.php вашей темы.

Более подробно: woocommerce-hide-payment-gatway-based-on-visitors-country

// Disable gateway based on country 
function payment_gateway_disable_country($available_gateways) { 
global $woocommerce; 
if (isset($available_gateways['cod']) && $woocommerce->customer->get_country() <> 'IN') { 
    unset( $available_gateways['cod']); 
} 
return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 
+0

Я уже добавил это в свои вопросы. – Nikhil

+0

Хорошее решение. Вы также можете добавить условие, чтобы сделать трек единственным доступным шлюзом, используя определенный способ доставки, используя этот gist https://gist.github.com/salgua/30ee2bc205d71f758fd9 – salgua

1

В "Checkout страницы" пользователь может иметь два адреса - биллинг и грузить один.

Чтобы правильно работать только с изменениями Отгрузка, если она заполнена, я немного изменил код. Вы должны проверить код страны доставки, если он установлен, если не только код страны:

function payment_gateway_disable_country($available_gateways) { 
    global $woocommerce; 
    $country = !empty($woocommerce->customer->get_shipping_country()) ? $woocommerce->customer->get_shipping_country() : $woocommerce->customer->get_country(); 
    if (isset($available_gateways['cod']) && $country <> 'CZ') { 
     unset( $available_gateways['cod']); 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 
Смежные вопросы