Недавно возникла проблема, преимущественно на сайтах WordPress. Не работает Contact form 7 не отправляет письма. Мы с моим коллегой, верстальщиком смогли решить данную проблему.
Началось все с того, что мне написали несколько человек, сказав, что не могут отправить письмо через форму обратной связи. При нажатии на кнопку «Отправить» просто крутится иконка отправки и ничего не происходит.
Оказалось, что плагин Contact form 7 действительно не отправляет письма. Мы стали искать причину. Все наши пострадавшие, были пользователями «яблочной» продукции. То есть, они отправляли сообщения, пользуясь Сафари браузером.
Мы выяснили, что письма не отправляются только с операционных систем MacOS и IOS. А точнее из браузера Safari версии 11.1 и выше (на iOS начиная с версии 11.3). И при условии, если в форме обратной связи предусмотрено прикрепление файла.
Если пользователь не прикрепил никакого файла к сообщению, то браузер блокирует ajax запрос, который используется во всех новых версиях Contact form 7 для отправки.
Ajax – аббревиатура значит Asynchronous Javascript and XML. Простыми словами – это технология, благодаря которой страница полностью не обновляется, а обновляется лишь ее часть.
В Contact form 7, благодаря запросу Ajax, сообщения отправляются без перезагрузки страницы. Но, в последних версиях браузера Safari появился баг, который выдает ошибку и не дает отправить письмо без прикрепления к нему файла.
Мы потратили несколько часов, чтобы во всем разобраться. Если и у вас, Contact form 7 не отправляет письма, вот вам готовая инструкция.
Решение
Первый способ (быстрый)
Самый банальный, но подойдет тем, кому важно чтобы contact form 7 заработал, но копаться в коде своего сайта вы боитесь.
Вам достаточно убрать из формы возможность прикреплять файлы.
Именно так мы и поступили сразу, как узнали. Разбираться в проблеме днем, было некогда… Да и решение мы нашли не сразу… А люди днем активно пишут и надо чтобы письма отправлялись, хоть и без прикрепления дополнительных файлов.
А вот уже ночью, когда рабочий день закончился, мы во всем разобрались и все исправили. И делимся этим с вами.
Это полноценное решение, берите и пользуйтесь )
Второй способ (правильный)
Чтобы плагин Contact form 7 снова заработал у пользователей Safari, вам нужно отключить использование технологии Ajax.
Делается это не сложно.
Надо просто добавить в файл function.php вашей темы WordPress вот этот код:
function wpcf7_load_js_not_safari11() {
global $is_safari;
if($is_safari) {
return false;
} else {
return true;
}
}
add_filter( ‘wpcf7_load_js’, ‘wpcf7_load_js_not_safari11’ );
После добавления этой модификации в ваш шаблон WordPress, Contact form 7 снова будет отправлять сообщения обычным способом, с перезагрузкой страницы, без использования Ajax.
Надеюсь, с выходом нового обновления, в браузере Сафари пофиксят этот баг. А пока правим сами.
P.S. Если у ваших коллег, Contact form 7 тоже не отправляет письма, не жмотьтесь, дайте им ссылку на эту статью ;-)
С уважением, Яна Ходкина и ее коллега веб-мастер, который не захотел писать свое имя :)
Сафари при прикреплении jpg файла пишет 0 фото вместо названия файла. На мобильниках так по крайней мере. Может есть какое решение по этой теме? Буду благодарен.