2013-06-09 21 views
5

W tym konfiguratorze woocommerce mam dwie metody płatności: Paypal i Płatność przy odbiorze.Jak ukryć metodę płatności w Woocommerce na podstawie kodu pocztowego

Jak to zrobić, aby przy odbiorze było ukryte/dezaktywowane tylko w przypadku niektórych kodów pocztowych.

Jest to kod znalazłem na 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

Czy znalazłeś sposób, aby to zrobić? Chciałbym to zrobić, a także pobrać dodatkową opłatę za COD. – Chirag

+0

Ta wtyczka spełnia wszystkie potrzeby: http://gremlin.io/shop/woocommerce-plugins/restrict-check-cod-payment-method-zip-pin-codes-woocommerce –

Odpowiedz

7

Aby wyłączyć/ukryte "Za pobraniem" Umieść ten kod w function.php Twojego motywu.

Więcej szczegółów: 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

Już dodałem to do moich pytań. – Nikhil

+0

Ładne rozwiązanie. Możesz także dodać warunek, aby dorsz był jedyną dostępną bramą przy użyciu określonej metody wysyłki, wykorzystując ten punkt https://gist.github.com/salgua/30ee2bc205d71f758fd9 – salgua

1

W "Page Zamówienie" użytkownik może mieć dwa adresy - płatności i adresu wysyłki jeden.

Do poprawnej pracy tylko ze zmianami wysyłki, jeśli jest wypełniona, zmieniłem trochę kod. Musisz przetestować kod wysyłkowy, jeśli jest ustawiony, jeśli nie tylko kod użytkownika:

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'); 
Powiązane problemy