【问题标题】:Issues in validating custom code in Contact Form 7在联系表 7 中验证自定义代码时出现问题
【发布时间】:2017-09-27 06:53:32
【问题描述】:

我正在尝试为字段名称 VoucherNumber 实现文本字段验证,该验证要求代码采用特定模式,即“WWV-”后跟 4 个数字。 我成功地使用下面的表达式^[W]WV-[0-9][0-9][0-9][0-9]在谷歌文档上实现了这一点。

我研究了各种答案并尝试在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;
  }

【问题讨论】:

    标签: php wordpress contact-form-7


    【解决方案1】:

    只需确保您的字段名称是 VoucherNumber 并尝试以下代码:

    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 );功能凭证验证($result,$tag){ if ('voucher' == $tag->name) { $voucher = isset($_POST['voucher']) ?修剪($_POST['凭证']):''; if ( ! preg_match ( "^[W]WV-[0-9][0-9][0-9][0-9]" , $voucher) ){ $result->invalidate( $tag, "凭证号码无效"); } } 返回 $result; } '
    猜你喜欢
    • 2020-07-18
    • 2014-05-16
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2016-08-06
    相关资源
    最近更新 更多