После обновления 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, парсер нормально отрабатывал.

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

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

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