【发布时间】:2018-12-07 09:54:16
【问题描述】:
我已经在 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' );
}
}
【问题讨论】:
-
你的条件不对。通过使用
$_POST['billing_phone'],您正在检索数组的值而不是值的存在。preg_match根据文档返回一个数字,因此您的情况类似于:if ( 6999999999 && !1)这是错误的。 -
那么请告诉我应该写什么条件
-
if (preg_match('/^[6-9]\d{9}$/', $_POST['billing_phone']) === 0) -
它仍然有同样的问题,当我输入错误的手机号码时,它在错误消息中没有显示任何内容,但用户仍在同一页面上,但如果我输入正确的手机号码,则会显示错误消息并且用户重定向到付款网关
-
我已经测试了匹配的
6999999999和不匹配的4999999999并且它正在工作。不过,我不是在谈论您的重定向。你能给我你正在测试的值吗?这是代码。 sandbox.onlinephpfunctions.com/code/…
标签: wordpress woocommerce checkout