2016-04-09 11 views
2

Bir WordPress + Woo-ticaret sitem var ve eyalet seçim alanını seçili ülkeye göre isteğe bağlı olarak yapmak istiyorum. Örneğin, müşterilerimin yalnızca ABD eyaletlerinden birine ait olmaları durumunda eyalet alanı eklemelerini istiyorum.Seçili ülkeye bağlı olarak woocommerce ödeme formu durum alanı gerekli değil

Bunu nasıl yaparım?

+0

Zaten bir şey denediniz mi? – Ilja

+0

Evet, ancak belirli değil! Seçilen ülkeyi nasıl alacağından emin değilim. Seçilen ülkeyi tespit etmek için jQuery eklemem gerekecek ve sonra AJAX ile biraz sihir yapmam gerekecek. Bunu yapmak için bazı filtre veya eylem kanca olup olmadığından emin değilim. –

cevap

2
add_filter('woocommerce_default_address_fields' , 'custom_override_state_required'); 
function custom_override_state_required($address_fields) { 
    $wc = WC(); 
    $country = $wc->customer->get_country(); 
    if($country !== 'US'){ 
    $address_fields['state']['required'] = false; 
    } 
    return $address_fields; 
} 

Bu benim için çalıştı kodudur. Bu cevabı @zipkundan cevabı düzenlemeden yayınlıyorum çünkü cevabında herhangi bir hata görmüyorum ama bir şekilde benim için çalışmıyordu. Bu WooCommerce sürümü nedeniyle olabilir veya başka bir nedeni olabilir! Birisinin benzer gereksinimleri varsa, her iki cevabı da denemenizi tavsiye ederim.

2

ziyaretçi ABD'den değilken

add_filter('woocommerce_default_address_fields' , 'custom_override_default_address_fields'); 
function custom_override_default_address_fields($address_fields) { 
    global $woocommerce; 
    $country = $woocommerce->customer->get_country(); 
    if($country !== 'US'){ 
     $address_fields['state']['required'] = false; 
    } 
    return $address_fields; 
} 

Bu 'devlet' alan isteğe yapacak (sizin functions.php değil) bu deneyin.
Bu yardımcı olur umarım.

GÜNCELLEME

add_filter('woocommerce_checkout_fields', 'custom_override_default_address_fields'); 
function custom_override_default_address_fields($fields){ 
    global $woocommerce; 
    $country = $woocommerce->customer->get_country(); 
    if($country !== 'US'){ 
     $fields['billing']['state']['required'] = false; 
     $fields['shipping']['state']['required'] = false; 
    } 
    return $fields; 
} 
+0

Yardımlarınız için teşekkür ederiz! Kodu sınamak için gidiyorum .. –

+0

Müşteri 'fatura adresine' gönderim yapmayı seçtiğinde ancak 'gönderim adresine gönderilecek' ayarımla çalışmadığında çalışıyor. Neden böyle davrandığı hakkında bir fikrin var. –

+0

Daha fazla test üzerinde, bunun yalnızca faturalandırma ülkesi ABD olarak seçilmiş ve gönderim ülkesinde neyin seçili olduğu önemli değil. –

İlgili konular