我一直在以前版本的WooCommerce中使用此自定义功能,以预先填写城市和邮政编码字段:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_city']['default'] = 'Beverly Hills';
$fields['billing']['billing_postcode']['default'] = '90210';
return $fields;
}
在新的WC更新之前,它一直很好用。
该城市仍有效,但默认的邮政编码字段似乎不再有用。它不会自动预先填充该值。
有什么变化吗?还有其他解决方法吗?
由于
答案 0 :(得分:1)
为“后代码”字段设置值不再起作用,因为存在自动填充功能。即使禁用“自动完成”,这也不起作用。因此,解决方法是在这种情况下使用 jQuery 。
所以你的代码将是:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields', 10, 1 );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_city']['default'] = 'Beverly Hills';
$fields['billing']['billing_postcode']['autocomplete'] = null; // Removing autocomplete
return $fields;
}
add_action( 'woocommerce_after_checkout_form' , 'my_custom_checkout_field_postcode' );
function my_custom_checkout_field_postcode( ) {
?>
<script>
(function($){
$('#billing_postcode').val('90210');
})(jQuery);
</script>
<?php
}
这将在“代码后”结帐帐单字段中正确设置所需的值。
代码进入活动子主题(或主题)的function.php文件或任何插件文件中。
答案 1 :(得分:1)
当您使用为作业创建的woocommerce回调时,不必使用Java脚本:“ woocommerce_checkout_get_value”。
调用woocommerce_after_checkout_form来设置检出字段的属性,例如禁用自动完成功能。
要注意的一点是,将针对签出表单中的每个字段重复调用此函数。因此,您打开该字段并返回您希望分配给结帐表格的值:
根据您上面的代码。你去...
function populating_checkout_fields ($fields, $input)
{
global $woocommerce;
switch($input)
{
case 'billing_city':
$FieldValue = 'Beverly Hills';
return $FieldValue;
break;
}
return $fields; // return the default value
}
add_filter( 'woocommerce_checkout_get_value', 'populating_checkout_fields', 10, 2 );
function ModifyAutoComplete($fields)
{
$fields['billing']['billing_postcode']['autocomplete'] = null;
}
add_filter( 'woocommerce_checkout_fields' , 'ModifyAutoComplete', 10, 1 );