具有自定义值的预归档结帐 post 代码
Pre-filing checkout post code with a custom value
我一直在以前版本的 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 更新之前,它一直运行良好。
城市仍然有效,但默认邮政编码字段似乎不再有效。它不会自动预填充值。
有什么变化吗?还有其他解决方法吗?
谢谢
设置 'post-code' 字段的值不再有效,因为有自动完成功能。即使禁用“自动完成”,这也不起作用。所以解决方法是在这种情况下使用 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'] = "off"; // 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
}
这将在“post-代码”结帐帐单字段中正确设置您想要的值。
代码在您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
当您使用为作业制作的 woocommerce 回调时,不必使用 java-script:'woocommerce_checkout_get_value'。
'woocommerce_after_checkout_form' 调用用于设置签出字段的属性,例如禁用自动完成。
需要注意的一点是,此函数将针对结帐表单中的每个字段重复调用。因此,您打开该字段并 return 您希望分配给 check-out 表单的值:
基于您上面的代码。给你...
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 );
我一直在以前版本的 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 更新之前,它一直运行良好。
城市仍然有效,但默认邮政编码字段似乎不再有效。它不会自动预填充值。
有什么变化吗?还有其他解决方法吗?
谢谢
设置 'post-code' 字段的值不再有效,因为有自动完成功能。即使禁用“自动完成”,这也不起作用。所以解决方法是在这种情况下使用 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'] = "off"; // 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
}
这将在“post-代码”结帐帐单字段中正确设置您想要的值。
代码在您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
当您使用为作业制作的 woocommerce 回调时,不必使用 java-script:'woocommerce_checkout_get_value'。
'woocommerce_after_checkout_form' 调用用于设置签出字段的属性,例如禁用自动完成。
需要注意的一点是,此函数将针对结帐表单中的每个字段重复调用。因此,您打开该字段并 return 您希望分配给 check-out 表单的值:
基于您上面的代码。给你...
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 );