2016-04-09 3 views
2

Ich habe eine WordPress + Woo-Commerce-Website und ich möchte das staatliche Feld auf der Kasse Formular optional basierend auf dem ausgewählten Land. Zum Beispiel möchte ich, dass meine Kunden das Statusfeld nur dann hinzufügen, wenn sie zu einem der US-Bundesstaaten gehören.Making Woocommerce Checkout-Formular Status Feld nicht erforderlich basierend auf ausgewählten Land

Wie mache ich das?

+0

Haben Sie schon etwas ausprobiert? – Ilja

+0

Ja, aber nicht spezifisch! Ich bin mir nicht sicher, wie ich das ausgewählte Land bekommen soll. Möglicherweise muss ich jQuery hinzufügen, um das ausgewählte Land zu erkennen, und dann etwas Magie mit AJAX machen. Ich bin mir nicht sicher, ob es dafür einen Filter oder einen Aktionshaken gibt. –

Antwort

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; 
} 

Dies ist Code, der für mich gearbeitet. Ich poste diese Antwort, ohne @zipkundan Antwort zu bearbeiten, weil ich keine Fehler in seiner Antwort sehe, aber irgendwie funktionierte es nicht für mich. Das könnte wegen der WooCommerce-Version sein oder könnte einen anderen Grund haben !! Ich empfehle, beide Antworten zu versuchen, wenn jemand ähnliche Anforderungen hat.

2

Versuchen Sie, diese (in functions.php)

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; 
} 

Dies wird der 'Zustand' Feld optional machen, wenn der Besucher nicht aus den USA ist.
Hoffe, das hilft.

UPDATE

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

Danke für die Hilfe! Ich werde den Code testen .. –

+0

Es funktioniert, wenn der Kunde wählen, an die "Rechnungsadresse" zu versenden, aber nicht mit meiner Einstellung, die "Versandadresse" ist. Irgendeine Idee, warum es sich so benimmt. –

+0

Bei weiteren Tests habe ich festgestellt, dass dies nur funktioniert, wenn das Rechnungsland als USA ausgewählt wurde und es keine Rolle spielt, was im Versandland ausgewählt wurde. –