Автор: Stasyuk Eugene 158 Метки: 30.05.2022

Краткая предыстория

Был у меня в работе сайт, в котором формы были настроены на плагине Contact Form 7. Сами же эти формы были интегрированы с Mailchimp. Задача состояла в следующем: после того, как пользователь заполнит и отправит определенную форму, сообщение должно попадать в сервис с определенным тегом (теги Mailchimp — это самый простой способ организовать свою аудиторию и пометить контакты на основе имеющейся у вас информации о них).

Использование плагина

Самое простое решение данной задачи в связке с Contact form 7 — это использовать приложение Chimpmatic. Оно очень удобно тем, что для установления дополнительных полей, нам достаточно перейти в админке на страницу редактирования формы, нажать на вкладку Chimpmatic, заполнить поле с API key и плагин готов к использованию.

chimpmatic

Самый главный минус этого плагина — большинство полей нам доступны для использования только в платной версии. Ради использования одних только тегов покупать плагин смысла нет.

Решение

Тогда было принято решение сгенерировать форму в сервисе Mailchimp, вставить её на сайт и стилизовать в соответствии с текущей формой. Вот так собственно выглядит сама форма:

form

Проблем особо со стилизацией не возникло. Но вот нюанс. После того, как наша форма будет отправлена, пользователь должен увидеть окно благодарности:

thanks

Форма, которая использует Contact form 7 окно благодарности, появляется тогда, когда в скрипте срабатывает событие wpcf7mailsent (срабатывает, когда форма успешно была отправлена на сервер и почта отправлена адресату). Mailchimp в своих формах, к сожалению, подобного функционала не предоставляет. Но, если посмотреть на код, то в разметке формы можно встретить такую конструкцию:

<div id="mce-responses" class="clear">
  <div id="mce-error-response" class="response" style="display: none;"></div>
  <div id="mce-success-response" class="response" style="display: none;"></div>
</div>

У нас есть два контейнера. Один из них id=’mce-error-response’ используется формой для выведения текста ошибки. Второй id=’mce-success-response’ — для выведения сообщения об успешной отправке формы. Изначально оба контейнера пусты. А поскольку в повторном использовании формы после отправки сообщения необходимости у нас нет, лучшим вариантом будет просто привязать появление окна к событию срабатывающему при изменении элемента. Таковым событием у нас является DOMSubtreeModified. Итоговый скрипт появления окна выглядит вот так:

document.querySelector("#mce-success-response").addEventListener("DOMSubtreeModified", function() {
 $( '.popup' ).addClass( 'success' );
 $( '.popup-inner' ).remove();
});

В данном примере, когда срабатывает событие, мы добавляем общему контейнеру с классом .popup класс .success и удаляем элемент который оборачивает нашу форму (.popup-inner).

Другие статьи

ACF поля в текстовом редакторе Gutenberg

ACF поля в текстовом редакторе Gutenberg

ACF поля в текстовом редакторе Gutenberg

Gutenberg — уже довольно долго используется в WordPress в качестве основного текстового редактора. Я, наверное, как и большинство разработчиков не особо горел желанием его использовать. Тем более, что в качестве альтернативы можно было загрузить плагин Classic Editor и дальше пользоваться старым редактором. Но, по мере использования Gutenberg, я увидел большое количество его преимуществ и таким […]

Position sticky не работает position: sticky

Position sticky не работает

Position sticky не работает

Position sticky не работает — к моему удивлению это довольно частый запрос, с которым я сам в свое время столкнулся. Sticky — это довольно простое и универсальное решение для размещения липких блоков на странице. Как минимум, оно не требует от тебя приличного количества javascript кода, который и работал местами коряво. Сейчас же данную процедуру можно […]