• Как добавить доп. валидацию в Contact form 7 WP?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    А вот если в поле имейл вписать пару букв

    Если используется именно поле email, то оно будет валидировать корректность введенного email-адреса.

    В стандартных средствах как включить такую валидацию не нашел

    Как-то давно делал, в частности менял выводимые сообщения об ошибках.
    Выглядело примерно так
    //Добавляем фильтры
    add_filter('wpcf7_validate_tel*', 'dco_wpcf7_validate', 10, 2);
    add_filter('wpcf7_validate_email*', 'dco_wpcf7_validate', 10, 2);
    add_filter('wpcf7_validate_text*', 'dco_wpcf7_validate', 10, 2);
    add_filter('wpcf7_validate_textarea*', 'dco_wpcf7_validate', 10, 2);
    
    function dco_wpcf7_validate($result, $tag) {
        //Получаем объект тега
        $tag = new WPCF7_Shortcode($tag);
    
        //Получаем значение поля
        $value = isset($_POST[$tag->name]) ? trim(wp_unslash(strtr((string) $_POST[$tag->name], "\n", " "))) : '';
    
        //Указываем правила для тега с именем "your-name"
        if ('your-name' == $tag->name) {
            //Если тег обязателен и имеет пустое значение — выводим сообщение об ошибке
            if ($tag->is_required() && '' == $value) {
                $result->invalidate($tag, 'Укажите имя');
            }
        }
    
        //Указываем правила для тега с типом "email"
        if ('email' == $tag->basetype) {
            //Если тег обязателен и имеет пустое значение — выводим сообщение об ошибке
            if ($tag->is_required() && '' == $value) {
                $result->invalidate($tag, 'Укажите верный электронный адрес');
                //Если значение не пустое и не является корректным email-адресом — выводим сообщение об ошибке
            } elseif ('' != $value && !wpcf7_is_email($value)) {
                //Функция "wpcf7_get_message" выводит сообщения с вкладки "Уведомления при отправке формы" настроек формы
                $result->invalidate($tag, wpcf7_get_message('invalid_email'));
            }
        }
    
        //Указываем правила для тега с типом "tel"
        if ('tel' == $tag->basetype) {
            //Если тег обязателен и имеет пустое значение — выводим сообщение об ошибке
            if ($tag->is_required() && '' == $value) {
                $result->invalidate($tag, 'Укажите верный телефон');
                //Если значение не пустое и не является корректным телефонным номером — выводим сообщение об ошибке
            } elseif ('' != $value && !wpcf7_is_tel($value)) {
                //Функция "wpcf7_get_message" выводит сообщения с вкладки "Уведомления при отправке формы" настроек формы
                $result->invalidate($tag, wpcf7_get_message('invalid_tel'));
            }
        }
        
        //Указываем правила для тега с именем "your-message"
        if ('your-message' == $tag->name) {
            //Если тег обязателен и имеет пустое значение — выводим сообщение об ошибке
            if ($tag->is_required() && '' == $value) {
                $result->invalidate($tag, 'Введите текст сообщения');
            }
        }
    
        return $result;
    }
    Ответ написан
    2 комментария
  • Как убрать все лишние тэги генерируемые Contact Form 7?

    kickflip2009
    @kickflip2009
    // Contact Form 7 remove auto added p tags
    add_filter('wpcf7_autop_or_not', '__return_false');
    Ответ написан
    Комментировать