2016-05-05 8 views
3

Ich muss die Adressfelder als "erforderlich" ändern, wenn der Benutzer eine andere Versandart als "lokale Abholung" wählt.Welche Methode oder welcher Aktionshaken wird ausgelöst, wenn die Versandmethode auf der Kasse geändert wird?

Ich schaffte es standardmäßig optional machen (lokale Aufnahme standardmäßig aktiviert ist) unter Verwendung eines Filters, wie folgt aus:

add_filter('woocommerce_checkout_fields', 'disable_required_address_shipping'); 

function disable_required_address_shipping($fields) { 
    if (check_if_local_pickup()) { 

     $fields['billing']['billing_address_1']['required'] = false; 
     $fields['billing']['billing_address_2']['required'] = false; 
     $fields['billing']['billing_city']['required'] = false; 
    } 

    return $fields; 

} 

function check_if_local_pickup() { 
    $chosen_methods = WC()->session->get('chosen_shipping_methods'); 
    $chosen_shipping = $chosen_methods[0]; 
    if ($chosen_shipping == 'local_pickup') { 
     return true; 
    } 
} 

Aber ich brauche es mit einer Aktion dynamisch zu ändern.

Ich habe versucht, hier nach einer Lösung zu suchen und konnte keine finden.

Gibt es eine Aktion, die beim Ändern der Versandart ausgelöst wird?
Irgendwelche Ideen?

+0

Dank !! es funktionierte. – netanelyo

Antwort

1

eine Aktion ausgelöst, wenn Versandmethode geändert wird Sie do_action('woocommerce_shipping_method_chosen', $chosen_method); verwenden:

do_action('woocommerce_shipping_method_chosen', 'check_if_local_pickup', 10, 1); 
function check_if_local_pickup($chosen_method) { 
    $chosen_methods = WC()->session->get('chosen_shipping_methods'); 
    $chosen_shipping = $chosen_methods[0]; 
    if ($chosen_shipping == 'local_pickup') { 
     return true; 
    } 
} 

Referenzen:
woocommerce_shipping_method_chosen (hookr.io)
Source code: class WC_Shipping (line 311)

Verwandte Themen