2015-02-09 49 views
2

我有一個使用woocommerce的電子商務網站 在結帳頁面中,如果開票國家設置爲「意大利」,我需要激活自定義必填字段「Codice Fiscale」,否則額外字段必須除去 在我的子主題的functions.php代碼是Woocommerce基於國家的自定義結賬字段

add_filter('woocommerce_checkout_fields' , 'field_cfpiva1'); 

function field_cfpiva1($fields) { 
$fields['billing']['billing_cf'] = array(
    'label'  => __('Codice Fiscale', 'woocommerce'), 
    'placeholder' => _x('Codice Fiscale', 'placeholder', 'woocommerce'), 
    'required' => false, 
    'class'  => array('form-row-wide'), 
    'clear'  => true 
); 

return $fields; 
} 

add_filter('woocommerce_admin_billing_fields' , 'admin_field_cfpiva1'); 

function admin_field_cfpiva1($fields) { 
$fields['cf'] = array(
    'label' => __('Codice Fiscale', 'woocommerce'), 
    'show' => true 
); 
return $fields; 
} 

但我已經將如何做到這一點的動態變化國家

回答

0

我一直在試圖獲得非常類似的東西不知道,而是在選擇特定送貨方式時顯示自定義字段。

以前我有以下jquery通過將它添加到cart-shipping.php模板成功地工作,但我似乎無法讓它在'狀態'字段上工作。或許,這可以幫助(我們倆)以某種方式到達我們倆以後就是答案......

<script> 
    $(document).ready(function(){ 

     if ($('#shipping_method_0').val() == 'flat_rate:delivered-vic-only'){ 
      $('#newfield').show(); 
     } 

     $('#shipping_method_0').on('change',function() { 
       if ($('#shipping_method_0').val() == 'flat_rate:delivered-vic-only'){ 
       $('#newfield').show(); 
      } else { 
      $('#newfield').hide(); 

      } 
     }) 
    }) 
    </script> 
+1

幸得#Sonic顧問 - 上面的代碼修改送貨方式來顯示/隱藏類。我根據上面的代碼發佈了一個答案,該代碼根據帳單和發貨國家修改了表單字段。謝謝索尼克顧問! – Jason 2015-12-15 22:05:54

2

我知道這個問題是有點老了,但這裏是我的解決方案來改變郵政編碼的最大長度領域。我的客戶使用的是WooCommerce Table Rates運輸插件,而在美國,如果輸入的郵政編碼包含完整的9位數字(xxxxx-xxxx),則該插件將無法正確計算運費。我們正在爲同一州的人收取國際費率。

我打算使用鉤子來限制post_code字段爲5,但許多國家的郵政編碼字符串較長(如加拿大,即6)。感謝#Sonic Advisor。我能夠迅速地修改代碼以選擇性地改變post_code表單字段的最大長度屬性,如下圖所示:

<script> 
//Limit zip code to 5 digits for United States ONLY 
    jQuery(document).ready(function(){ 

     if (jQuery('#billing_country').val() == 'US'){ 
      jQuery('#billing_postcode').attr('maxlength','5'); 

     } 

     jQuery('#billing_country').on('change',function() { 
       if (jQuery('#billing_country').val() == 'US'){ 
       jQuery('#billing_postcode').attr('maxlength','5'); 
      } else { 
      jQuery('#billing_postcode').attr('maxlength','15'); 

      } 
     }) 

     if (jQuery('#shipping_country').val() == 'US'){ 
      jQuery('#shipping_postcode').attr('maxlength','5'); 

     } 

     jQuery('#shipping_country').on('change',function() { 
       if (jQuery('#shipping_country').val() == 'US'){ 
       jQuery('#shipping_postcode').attr('maxlength','5'); 
      } else { 
      jQuery('#shipping_postcode').attr('maxlength','15'); 

      } 
     }) 
    }) 
    </script>