验证联系表格7中的自定义代码的问题

时间:2017-09-27 06:53:33

标签: php wordpress contact-form-7

我正在尝试为字段名称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;
  }

1 个答案:

答案 0 :(得分:0)

只需确保您的字段名称为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;
}