【问题标题】:Checking checkout billing number phone with a specific pattern in WooCommerce在 WooCommerce 中使用特定模式检查结帐帐单号码电话
【发布时间】:2018-06-02 07:49:57
【问题描述】:

我需要让woocommerce电话号码以+370开头...我试过这个功能:

add_action('woocommerce_checkout_update_order_meta', 'dd_Testval');

function dd_Testval() {
    $billing_phone = filter_input(INPUT_POST, 'billing_phone');

    if (strlen(trim(preg_replace('[\+]\d{2}[\(]\d{2}[\)]\d{4}[\-]\d{4}', '', $billing_phone))) > 0) {
        wc_add_notice(__('Invalid <strong>Phone Number</strong>, please check your input.'), 'error');
    }
}

没有效果。

有什么建议吗?

【问题讨论】:

    标签: php regex wordpress woocommerce checkout


    【解决方案1】:

    正确的做法是:

    • 改用在woocommerce_checkout_process 操作挂钩中挂钩的自定义函数。
    • 使用preg_match() 而不是preg_replace()

    现在正则表达式将检查电话号码是否以 +370 开头。它将只接受以下字符:数字、空格和连字符,总长度至少为 9 个字符。

    add_action('woocommerce_checkout_process', 'custom_checkout_field_process');
    function custom_checkout_field_process() {
        // Check the number phone
        if ( isset($_POST['billing_phone']) && ! preg_match("/^(\+370)?[0-9 \-]{5,}/i", $_POST['billing_phone']) )
            wc_add_notice(__('Invalid <strong>Phone Number</strong>, please check your input.'), 'error');
    }
    

    此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。

    经过测试并且可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 2016-01-10
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 2021-03-02
      相关资源
      最近更新 更多