验证联系表7中的自定义代码的问题
问题描述:
我想实现一个字段名称VoucherNumber的文本字段验证,要求代码处于'WWV-'后面跟4个数字的特定模式。 我成功地使用以下表达式^[W]WV-[0-9][0-9][0-9][0-9]
在google文档上实现了这一点。验证联系表7中的自定义代码的问题
我研究了各种答案,并试图在functions.php中添加此代码,但它没有奏效。它只会显示表单正在发送(旋转轮),但即使在5分钟后也不会发送。
add_filter('wpcf7_validate_text*', 'validate_voucher_number', 20, 2);
function validate_voucher_number($result, $tag) {
$tag = new WPCF7_FormTag($tag);
if ('VoucherNumber' == $tag->name) {
$VoucherNumber = isset($_POST['VoucherNumber']) ? trim($_POST['VoucherNumber']) : '';
if (! preg_match ("^[W]WV-[0-9][0-9][0-9][0-9]" , $VoucherNumber)){
$result->invalidate($tag, "Voucher number is invalid");
}
}
return $result;
}
答
只要确保你的字段名称充值卡号码,并尝试这种代码:
add_filter('wpcf7_validate_text', 'vouchervalidation', 20, 2);
function vouchervalidation($result, $tag) {
if ('VoucherNumber' == $tag->name) {
$VoucherNumber = isset($_POST['VoucherNumber']) ? trim($_POST['VoucherNumber']) : '';
if (! preg_match ("^[W]WV-[0-9][0-9][0-9][0-9]" , $VoucherNumber)){
$result->invalidate($tag, "Voucher number is invalid");
}
}
return $result;
}
我改变的字段名“代金券”为简单起见,但事实证明这个代码不验证领域它也会接受无效响应(忽略前三个字母的大小写锁定,即使它与验证规则不匹配也会接受任何响应)。我将代码插入到functions.php文件的末尾,并尝试将其粘贴到起始位置,但仍无法验证。 –
您的preg_match是否正确,因为我怀疑它一定不会进入您的if条件 –
我正在使用此代码'add_filter('wpcf7_validate_text','vouchervalidation',20,2); function vouchervalidation($ result,$ tag){ if('voucher'== $ tag-> name){ $ voucher = isset($ _POST ['voucher'])? trim($ _POST ['voucher']):''; if(!preg_match(“^ [W] WV- [0-9] [0-9] [0-9] [0-9]”,$ voucher)){ $ result-> invalidate($ tag ,“凭证号码无效”); } } return $ result; }' –