我设法使用此代码对网站的结算结帐字段进行了一些调整
add_filter( 'woocommerce_default_address_fields', 'custom_woocommerce_default_address_fields' );
function custom_woocommerce_default_address_fields( $address_fields ) {
$address_fields['first_name']['custom_attributes'] = array('maxlength' => 35);
$address_fields['last_name']['custom_attributes'] = array('maxlength' => 35);
$address_fields['address_1']['custom_attributes'] = array('maxlength' => 50);
$address_fields['address_2']['custom_attributes'] = array('maxlength' => 50);
$address_fields['city']['custom_attributes'] = array('maxlength' => 35);
$address_fields['postcode']['custom_attributes'] = array('maxlength' => 4, 'type' => 'number' );
$address_fields['phone']['custom_attributes'] = array('maxlength' => 11, 'type' => 'number' );
unset($address_fields['company']);
unset($address_fields['address_2']);
return $address_fields;
}
注意我在邮政编码和电话号码字段上所做的两件事。我都为两个字段都设置了特定的最大长度。我还将它们的输入类型设置为“数字”,因为我注意到也可以在这些字段中输入字母,而这些字段应该只是数字。但是,当我运行此代码时,什么也没有发生。
我还尝试将我为这些字段所做的自定义分开,例如:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields )
{
$fields['billing']['billing_phone']['type'] = 'number';
$fields['billing']['billing_postcode']['type'] = 'number';
$fields['billing']['billing_phone']['maxlength'] = 11;
$fields['billing']['billing_postcode']['maxlength'] = 4;
return $fields;
}
但是,只有 ['type'] ='number'是这两个签出字段中的可见变化。我认为可以,但是在我尝试键入所有字母时,字母 e 和 r 仍然会持续出现在邮政编码和电话字段中。这是一个错误还是有可能克服这个问题?我只想在这两个计费字段中同时实现maxlength和输入type = number。