2017-09-27 89 views
0

我想实现一个字段名称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; 
    } 

回答

0

只要确保你的字段名称充值卡号码,并尝试这种代码:

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; 
} 
+0

我改变的字段名“代金券”为简单起见,但事实证明这个代码不验证领域它也会接受无效响应(忽略前三个字母的大小写锁定,即使它与验证规则不匹配也会接受任何响应)。我将代码插入到functions.php文件的末尾,并尝试将其粘贴到起始位置,但仍无法验证。 –

+0

您的preg_match是否正确,因为我怀疑它一定不会进入您的if条件 –

+0

我正在使用此代码'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; }' –