基于国家/地区的Woocommerce自定义签出字段

基于国家/地区的Woocommerce自定义签出字段,woocommerce,field,checkout,Woocommerce,Field,Checkout,我有一个使用woocommerce的电子商务网站 在结帐页面中,如果账单国家设置为“意大利”,我需要激活自定义必填字段“Codice Fiscale”,否则必须删除该额外字段 my child theme functions.php中的代码是 add_filter( 'woocommerce_checkout_fields' , 'field_cfpiva1' ); function field_cfpiva1( $fields ) { $fields['billing']['billing

我有一个使用woocommerce的电子商务网站 在结帐页面中,如果账单国家设置为“意大利”,我需要激活自定义必填字段“Codice Fiscale”,否则必须删除该额外字段 my child theme functions.php中的代码是

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

但我不知道如何在国家/地区发生变化时动态地执行此操作,我一直在尝试实现一些非常类似的功能,而是在选择特定的运输方式时显示一个自定义字段

之前,通过将以下jquery添加到cart-shipping.php模板中,我成功地使其工作,但我似乎无法在“state”字段中使其工作。也许这可以帮助(我们两个)找到我们都想要的答案

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

$(文档).ready(函数(){
如果($(“#装运方法_0”).val()=“固定费率:仅适用于已交付的vic”){
$('#newfield').show();
}
$('#shipping_method_0')。在('change',function()上{
如果($(“#装运方法_0”).val()=“固定费率:仅适用于已交付的vic”){
$('#newfield').show();
}否则{
$('#newfield').hide();
}
})
})

我知道这个问题有点老了,但我的解决方案是更改邮政编码字段的maxlength。我的客户使用的是WooCommerce表费率发货插件,在美国,如果输入的邮政编码包含完整的9位数字(xxxxx-xxxx),该插件将无法正确计算发货。我们对同一州的人收取国际费率

我打算使用一个钩子将post_代码字段限制为5,但许多国家的post代码字符串较长(如加拿大,为6)。感谢#Sonic Advisor。我能够快速修改代码,有选择地更改post_代码表单字段的maxlength属性,如下所示:

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

//仅限美国邮政编码为5位数
jQuery(文档).ready(函数(){
if(jQuery(“#计费国家”).val()=“US”){
jQuery(“#账单邮政编码”).attr('maxlength','5');
}
jQuery(“#计费国家”)。on('change',function(){
if(jQuery(“#计费国家”).val()=“US”){
jQuery(“#账单邮政编码”).attr('maxlength','5');
}否则{
jQuery(“#账单邮政编码”).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');
}否则{
jQuery('#shipping_postcode').attr('maxlength','15');
}
})
})
归功于#Sonic Advisor-上面的代码修改了shipping方法以显示/隐藏类。我在下面发布了一个基于上述代码的答案,该代码根据账单和发货国家修改了表单字段。谢谢你的声音顾问!