在 WooCommerce 结帐时格式化帐单电话号码

Posted

技术标签:

【中文标题】在 WooCommerce 结帐时格式化帐单电话号码【英文标题】:Format billing phone number on WooCommerce checkout 【发布时间】:2019-02-14 23:05:11 【问题描述】:

对于 WooCommerce 结帐结算字段,如何使此字段需要 9 个数字并插入破折号以进行正确的电话格式设置?例如,不是在电话号码字段中输入 3053453212,而是显示:(305-345-3212)

【问题讨论】:

【参考方案1】:

基于“Formatting a phone number in a form using jquery”应答码,以下是格式化 Woocommerce 计费电话的方法:

add_action('wp_footer', 'format_checkout_billing_phone');
function format_checkout_billing_phone() 
    if ( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script type="text/javascript">
    jQuery( function($)
        $('#billing_phone').on( 'input focusout', function() 
            var p = $(this).val();

            p = p.replace(/[^0-9]/g, '');
            p = p.replace(/(\d3)(\d3)(\d4)/, "$1-$2-$3");
            $(this).val(p);
        );
    );
    </script>
    <?php
    endif;

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

【参考方案2】:

你可以试试这个

/** 
*  Require 9 digit number. Format to 000-000-0000 at submission
*  ***/54700465
*/

add_filter( 'woocommerce_billing_fields', 'wc_filter_phone', 10, 1 );
function wc_filter_phone( $address_fields ) 
    $address_fields['billing_phone']['min-lenght="9"'];
    $format_number = preg_replace("/^(\d3)(\d3)(\d4)$/", "$1-$2-$3", $address_fields);
    return $format_number;  


// End

【讨论】:

不走运 :( 不过我真的很感谢你尝试这个【参考方案3】:

另一种对我有用的方法is given here。

$_POST['billing_phone'] = preg_replace("/^(\d3)(\d3)(\d4)$/", "$1-$2-$3", $number);

【讨论】:

以上是关于在 WooCommerce 结帐时格式化帐单电话号码的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 中更改结帐帐单字段占位符

Woocommerce 结帐页面先显示送货地址,然后显示帐单地址?

Woocommerce 设置计费和运输信息

如何在 woocommerce 中处理付款之前获取帐单地址?

避免在 WooCommerce 结帐中进行计费电话验证

Woocommerce 和 PayPal 账单地址