После обновления contact form 7 перестали показываться уведомления

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Есть сайт на WordPress, где установлен плагин Contact Form 7, и дополнительные плюшки для него:

  • CF7 Smart Grid Design Extension
  • Contact Form 7 — Dynamic Text Extension
  • Contact Form 7 Polylang extension

Обновили CF7 Smart Grid Design Extension (Версия 4.12.2), и плагин Contact Form 7 стал глючить, в админке формы не открывались нормально для редактирования

Обновили тогда Contact Form 7 до последней (Версия 5.5.2), и все стало нормально работать, НО уведомления об ошибках заполнения формы перестали показываться и форму стало корежить (речь не про админку а про лицевую часть сайта frontend).

Перечень возникших багов:

  • Перед тегом <label> стал появляться тег <p>, хотя раньше небыло, из-за этого поехала верстка, ну это поправимо, просто указать явно тег <div> перед тегом <label>, и дать диву нужные стили
  • Стали появляться теги <br> хотя в редакторе кода их нет, это из-за того что код был на разных строчках, и пофиг что код в редакторе html, интерпретатор сам добавил и разрешения не спросит.
  • Перестали показываться уведомления об ошибках заполнения формы, просто отображается пустое поле где нет текста.

Если две первых ошибки легко устраняются в редакторе и стилями, то последняя просто гвоздь программы.

Работа над устранением бага

Есть такая форма

После отправки заявки с незаполненными полями, должно показаться уведомление об ошибке заполнения, но видим такую картину

Поле для сообщения есть а текста нет.

В консоли браузера появляется ошибка

TypeError: n is null

Как оказалось, на сайте в теме, в функции (functions.php) был прописан следующий код


add_filter('wpcf7_form_elements', function($content) {
$content = preg_replace('/<(span).*?class="\s*(?:.*\s)?wpcf7-form-control-wrap(?:\s[^"]+)?\s*"[^\>]*>(.*)<\/\1>/i', '\2', $content);

return $content;
});

Который убирал обрамления <span> вокруг полей ввода. Если закоментировать его то все уведомления опять показываются. Тоесть при обработки submit идет проверка полей, а поскольку стандартный вывод был изменен то и парсер контакт форм не может поля отловить и выдать адекватно уведомление, это при том что в прежней версии Contact Form 7, парсер нормально отрабатывал.

Теперь сообщение с текстом отображается

2 комментария

  • Хомуты

    Если тестовое сообщение вы все таки получили значит дела плохи с вашим плагином CF7. Для начала делаем обновление WordPress до новой версии, потом делаем обновление всех плагинов в том числе и CF 7 теперь проверяем работу. Если и после этих действий ваш Contact Form 7 не работает — возможно у вас на сайте вирус, который вмешивается в обновление и нормальную работу плагина обратная связь WordPress . Скачиваем свежий ВП дистрибутив к себе на комп и заливаем по ФТП все файлы и папки кроме wp-content. Предварительно нужно сохранить информацию в файле wp-config.php, ведь там ваши настройки к базе данных.

    • admin

      Сообщения не приходили и вирусов на сайте не было. По скачиванию свежего ВП — не понял, сайт находится на хостинге, и автоматом обновляется ВП. Это разве что если на сайте обнаружен вирус, то да, берем новый ВП и проставляем на него новые плагина, но это не гарантирует что будет все ок, так как код может быть и в БД.
      Вообще речь в статье не о зараженном сайте а о последствиях после обновления плагинов.

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

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