wordpress - Woocommerce Checkout 印度手机号码验证
问题描述
我已经在 woocommerce 结帐字段中添加了这段代码来验证手机号码,并且正则表达式也可以正常工作,但这是一个小问题 1)当客户输入错误的手机号码时 wp_add_notice 没有向客户打印错误消息 2)当客户输入正确时手机号码然后显示错误消息,客户转到进一步的付款选项 摘要:它不会为我想要的错误手机号码打印错误消息。
// Custom validation for Billing Phone checkout field
add_action('woocommerce_checkout_process', 'custom_validate_billing_phone');
function custom_validate_billing_phone() {
$is_correct = preg_match('/^[6-9]\d{9}$/', $_POST['billing_phone']);
if ( $_POST['billing_phone'] && !$is_correct) {
wc_add_notice( __( 'The Mobile No. should be <strong>10 digits with starting 6,7,8,9</strong>.Try Again.' ), 'error' );
}
}
解决方案
在我看来,无需覆盖默认的 Woocommerce 字段,也无需使用 Javascript 验证。您可以添加自定义验证,该验证将添加到 Woocommerce 的默认计费电话字段验证中,挂钩到提交结帐后触发的操作。
这是我刚刚为客户实现的代码。
// Custom validation for Billing Phone checkout field
add_action('woocommerce_checkout_process', 'custom_validate_billing_phone');
function custom_validate_billing_phone() {
$is_correct = preg_match('/^[0-9]{6,20}$/', $_POST['billing_phone']);
if ( $_POST['billing_phone'] && !$is_correct) {
wc_add_notice( __( 'The Phone field should be <strong>between 6 and 20 digits</strong>.' ), 'error' );
}
}
当然,代替我的 preg_match,您可以检查其他任何内容并根据需要调整条件代码。
当然,在正确设置它们之后,您还可以通过检查正确的 $_POST 变量或您自己的自定义结帐字段来为其他默认字段添加自定义验证,但这是另一个主题:)
希望这可以帮助。
推荐阅读
- r - 如何解决执行 seq 函数中的错误?
- excel-formula - 如何根据时间计算实例
- javascript - 将本机 POST 数据反应到 API 不起作用
- java - Java EE App 不像 jsp 那样打印 JSP 文件,而是像 HTML
- angular - 打开 whatsapp 聊天以获得一个数字 ionic 3/4
- android - Retrofit 2 如何多次发出相同的请求
- oracle - 当我们在 oracle 中声明 number 数据类型时,它将采用什么默认数据类型?
- c - 如何在刷新通过 bitbake 生成的图像的覆盖范围时修复“当前上下文中没有符号 __gcov_flush”错误
- python - 使用python将日志文件转换为json文件
- bamboo - Bamboo - 从一个 Bamboo 实例导出计划,将它们移动到另一个 Bamboo 实例?