我已将自定义字段添加到结帐页面 (billing_vat),当国家/地区设置为爱尔兰 (IE) 时需要填写该字段。
目前,我已经更改了标签以表明它与使用 JavaScript 的所有其他字段一样是必需的,并且已连接到“woocommerce_get_country_locale”以将该字段更改为 IE 所需。
add_filter('woocommerce_billing_fields', 'dc_custom_billing_fields', 1000, 1);
function dc_custom_billing_fields( $fields ) {
$fields['billing_vat'] = array(
'label' => 'VAT Number',
'required' => false,
'type' => 'text',
'class' => array( 'form-row-wide' ),
'priority' => 35,
);
return $fields;
}
add_filter( 'woocommerce_get_country_locale', 'dc_change_locale_field_defaults', 1000, 1 );
function dc_change_locale_field_defaults($countries) {
$countries['IE']['billing_vat']['required'] = true;
return $countries;
}
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'dc_display_admin_order_meta', 10, 1 );
function dc_display_admin_order_meta($order) {
echo '<p><strong>'.__('Billing VAT').':</strong> ' . get_post_meta( $order->get_id(), '_billing_vat', true ) . '</p>';
}
add_action( 'woocommerce_after_order_notes', 'dc_after_checkout_field' );
function dc_after_checkout_field() {
?>
<script>
(function($) {
$(document).ready(function (){
$('#billing_country').on('change',function() {
if ($('#billing_country').val() == 'IE') {
// Required
$('#billing_vat').prop('required', true);
$('label[for="billing_vat"] .optional').remove();
$('label[for="billing_vat"]').append('<abbr class="required" title="required">*</abbr>');
}
}
})
});
})(jQuery);
</script>
<?php
}
但是,当我提交表格时,国家/地区设置为爱尔兰且该字段为空,Woo 并没有说该字段是必需的。
阿波罗的战车
子衿沉夜