2016-05-05 10 views
3

「ローカルピックアップ」以外の配送方法を選択する場合、住所フィールドを「必須」に変更する必要があります。チェックアウトページで配送方法を変更する際に発生するメソッドまたはアクションフックはありますか?

私はこのように、フィルタを使用して(ローカルピックアップはデフォルトで選択された)デフォルトでは、それをオプションに管理:

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

しかし、私はアクションを使用して動的に変更する必要があります。

解決策を探してみると見つかりませんでした。

発送方法の変更時に発生する措置はありますか?
アイデア

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

参考文献::配送方法は、あなたがdo_action('woocommerce_shipping_method_chosen', $chosen_method);使用することに変更されたときにアクションを発射する

+0

感謝を!出来た。 – netanelyo

答えて

関連する問題