【问题标题】:Pre-filing checkout post code with a custom value使用自定义值预归档结帐邮政编码
【发布时间】:2017-08-02 22:09:36
【问题描述】:
我在之前的 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 更新之前,它一直运行良好。
城市仍然有效,但默认邮政编码字段似乎不再有效。它不会自动预填充该值。
有什么变化吗?有没有其他解决方法?
谢谢
【问题讨论】:
标签:
php
jquery
wordpress
woocommerce
checkout
【解决方案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'] = "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
}
这将在“邮政编码”结帐结算字段中正确设置您想要的值。
代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。
【解决方案2】:
当您使用为工作制作的 woocommerce 回调时,不必使用 java-script:'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 );