在WooCommerce中设置结帐邮政编码字段的最大长度

问题描述

我正在尝试删除增加使用Woocommerce开发的WordPress网站上的认最大长度(如今设置为4)。

到目前为止,我已经在孩子主题functions.PHP

上尝试了所有这些功能

#OPTION 1

function wpse215677_checkout_fields ( $fields ) {
    $fields['postcode']['maxlength'] = 5;
    return $fields;
}
add_filter('woocommerce_default_address_fields','wpse215677_checkout_fields');

#OPTION 2-有和无['custom_attributes']

add_filter( 'woocommerce_checkout_fields','my_override_checkout_fields');

function my_override_checkout_fields( $fields ) {
    $fields['billing']['postcode']['custom_attributes']['maxlength'] = 5;
     $fields['billing']['billing_postcode']['custom_attributes']['maxlength'] = 5;
     return $fields;
}

#OPTION 3-有和无['custom_attributes']

function my_wc_custom_billing_fields( $fields ) {
    $fields['billing_postcode']['custom_attributes']['maxlength'] = 5;

    return $fields;
}

add_filter( 'woocommerce_billing_fields','my_wc_custom_billing_fields' );

function my_wc_custom_shipping_fields( $fields ) {
    $fields['shipping_postcode']['custom_attributes']['maxlength'] = 5;

    return $fields;
}

add_filter( 'woocommerce_shipping_fields','my_wc_custom_shipping_fields' );

所有这些都可以在购物车计算器上正常工作(现在我可以写4以上的任何数字),但是当我转到结帐页面并尝试在邮政编码(运输或帐单)上写4个以上字符的数字时,输入仍然保持最大长度为4(我已经使用Chrome的工具对其进行了检查)。

有什么方法可以覆盖结帐时的整个输入,以使我可以在此输入上写入4个以上的字符?

或者我在这功能上做错了什么,这就是为什么它们在结帐页面上不起作用的原因?

解决方法

一种方法是通过jQuery进行操作,尽管您已经在此处发布的代码可以正常使用

function action_wp_footer() {
    // Returns true on the checkout page,when false,return
    if ( ! is_checkout() ) return;
    ?>
    <script>
        jQuery(document).ready(function($){
            $( '#billing_postcode' ).attr( 'maxlength','5' );
            $( '#shipping_postcode' ).attr( 'maxlength','5' );
        });
    </script>
    <?php
}
add_action( 'wp_footer','action_wp_footer' );