具有自定义值的预归档结帐 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 );