1. Главная
  2. Блог
  3. Wordpress
  4. Дополнительная валидация Contact Form 7

Дополнительная валидация Contact Form 7

К форме бронирования, созданной с помощью плагина Contact Form 7 потребовалось добавить логику. Есть два поля с типом число. В одном поле указывается количество взрослых, в другом – детей. Общее количество гостей не может быть более 15. И конечно дети не могут приехать сами по себе – требуется как минимум один взрослый сопровождающий.

кастомная валидация по условию для полей CF7

Изучив пример кастомной валидации для CF7 https://contactform7.com/2015/03/28/custom-validation/ написали следующий код:

/*кастомная валидация формы*/
add_filter( 'wpcf7_validate_number*', 'custom_number_confirmation_validation_filter', 20, 2 );
function custom_number_confirmation_validation_filter( $result, $tag ) {
  if ( 'number-540' == $tag->name ) {
    $number_540 = isset( $_POST['number-540'] ) ? intval( $_POST['number-540'] ) : 0;
    $number_568 = isset( $_POST['number-568'] ) ? intval( $_POST['number-568'] ) : 0;
  
    if ( $number_540 < 1 || ( $number_540 + $number_568 ) > 15 ) {//условие вывода ошибки, поле количество взрослых меньше 1 или сумма по обоим полям больше 15
      $result->invalidate( $tag, "Общее количество детей и взрослых не должно быть более 15. В группе должен быть как минимум 1 взрослый." );//Здесь указывается сообщение если поля заполнены не корректно
    }
  }
  return $result;
}

Обращаем внимание, что wpcf7_validate_number* в конце со звездочкой в нашем случае добавляется _number, если поле не числовое, то добавляется соответствующий тип поля.

number-540 и number-568 значения атрибута data-name из тегов формы:

Количество взрослых [number* number-540] 
Количество детей [number number-568] 

Названия переменных $number_540 и $number_568 для наглядности через подчеркивание.

Код размещаем в файле functions.php активной темы.


Понравилась статья?

Поддержать нас рублями:

Нужна помощь? Обращайтесь!

Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий
Нажмите для звонка
Хотите заказать сайт?
Обращайтесь любым удобным способом и мы поможем подобрать интересный вариант для Вас!