Contact form 7, как добавить валидацию полей формы.

Рассмотрим пример валидации формы по маске номера.

Фильтр для валидации будет иметь следующий вид:

add_filter("wpcf7_validate", function ($result, $tags) {
    $valid = FALSE; // here you can do your API call to calculate the validation
    if (!$valid) {
        $result->offsetSet(
              "reason"
            , ["your-name" => "error message for this field"]
        );
    }
    return $result;
}, 10, 2);

Для выделения формы по id используем проверку:

	if ( isset($_POST['_wpcf7']) && $_POST['_wpcf7'] != 1502)  
		return $result;// Only form id 1502 will be validated.

Если нужно проверить все формы по названию поля, код будет иметь следующую структуру:

$tag = new WPCF7_Shortcode( $tag );
    if ( 'name' == $tag->name ) { // validate name field only
        .... // my validation here
    }

таким образом, наш код для проверки формы с id=1502 по маске (будем использовать плагин mask.js) ,будет иметь следующий вид (добавляем код в functions.php:

add_filter("wpcf7_validate", function ($result, $tags) {

	if ( isset($_POST['_wpcf7']) && $_POST['_wpcf7'] != 1502)  
		return $result;// Only form id 1502 will be validated. 

	$form  = WPCF7_Submission::get_instance();
    $phone = $form->get_posted_data('your-tel');

    if (preg_match_all('/\\d/', $phone) == 11) {
    	$valid = true;
    } else {
    	$valid = false;
    }

     // here you can do your API call to calculate the validation
    if (!$valid) {
        $result->offsetSet(
              "reason"
            , ["your-tel" => "error message for this field"]
        );
    }
    return $result;
}, 10, 2);

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *