Зачем нужна подписка на рассылку в форме Contact Form 7
В большинстве случаев контактные формы на сайте служат для сбора заявок или вопросов от посетителей. Однако часто владельцы сайтов хотят расширить функционал и предложить пользователям подписаться на рассылку новостей или акций. Это удобно реализовать добавлением чекбокса в форму Contact Form 7, где посетитель может добровольно дать согласие на получение писем.
Такой подход позволяет не только увеличить базу подписчиков, но и соблюсти требования законодательства о согласии на обработку персональных данных. Важно, чтобы подписка была именно опциональной и не мешала отправке формы, если пользователь не хочет подписываться.
Как добавить checkbox подписки в форму Contact Form 7
Для начала откройте редактор нужной формы Contact Form 7 и добавьте следующий тег для чекбокса:
[checkbox contactform7_ru_newsletter use_label_element "Подписаться на рассылку"]Этот тег создаст чекбокс с надписью «Подписаться на рассылку». Атрибут use_label_element оборачивает чекбокс в тег <label> для удобства клика по тексту. Имя поля — contactform7_ru_newsletter — рекомендуется делать уникальным, используя префикс, например, домена сайта.
После добавления чекбокса форма будет выглядеть так:
[text* your-name placeholder "Ваше имя"]
[email* your-email placeholder "Ваш Email"]
[checkbox contactform7_ru_newsletter use_label_element "Подписаться на рассылку"]
[submit "Отправить"]Обработка подписки после отправки формы
Сам Contact Form 7 не умеет автоматически добавлять подписчиков в рассылку. Для этого нужно настроить интеграцию с рассылочным сервисом или добавить пользовательский код, который будет запускаться после отправки формы и при установленном чекбоксе.
Рассмотрим пример на PHP, который можно добавить в файл functions.php вашей темы. Этот код проверит, если пользователь отметил чекбокс, и добавит email в список подписчиков (пример для MailChimp API):
add_action('wpcf7_mail_sent', 'contactform7_ru_add_to_newsletter');
function contactform7_ru_add_to_newsletter($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) {
return;
}
$data = $submission->get_posted_data();
if (isset($data['contactform7_ru_newsletter']) && !empty($data['your-email'])) {
$email = sanitize_email($data['your-email']);
// Здесь добавьте код интеграции с вашим сервисом рассылки
// Пример для MailChimp API (нужно добавить свою логику и ключи)
// contactform7_ru_mailchimp_subscribe($email);
}
}Этот хук wpcf7_mail_sent вызывается после успешной отправки формы. Внутри функции мы достаем данные формы, проверяем наличие чекбокса и email, и далее вызываем функцию добавления подписчика.
Пример простейшей функции добавления подписчика в MailChimp
Ниже пример для понимания, как может выглядеть функция добавления в MailChimp через API v3:
function contactform7_ru_mailchimp_subscribe($email) {
$api_key = 'ВАШ_API_КЛЮЧ';
$list_id = 'ВАШ_ID_СПИСКА';
$data_center = substr($api_key,strpos($api_key,'-')+1);
$url = 'https://' . $data_center . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/';
$json = json_encode([
'email_address' => $email,
'status' => 'subscribed'
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}Эта функция отправляет запрос в MailChimp для добавления нового подписчика. Не забудьте заменить ВАШ_API_КЛЮЧ и ВАШ_ID_СПИСКА на реальные значения из вашего аккаунта MailChimp.
Отправка уведомления администратору с информацией о подписке
Чтобы видеть, кто подписался, можно добавить в письмо уведомления дополнительный блок с информацией о том, подписался ли пользователь на рассылку.
Для этого в шаблоне письма Contact Form 7 добавьте переменную поля чекбокса:
Подписка на рассылку: [contactform7_ru_newsletter]Если чекбокс не отмечен, то в письме будет пусто, если отмечен — появится текст «Подписаться на рассылку».
Проверка и валидация чекбокса подписки
Иногда нужно, чтобы пользователь обязательно согласился с подпиской — например, для согласия на обработку персональных данных. В таком случае чекбокс делается обязательным для заполнения:
[checkbox* contactform7_ru_newsletter use_label_element "Я согласен получать рассылку"]Звездочка после checkbox означает обязательное поле. Contact Form 7 не позволит отправить форму без установленного флажка. Но в большинстве случаев подписка добровольна, поэтому лучше не делать чекбокс обязательным.
Альтернативы и расширения для подписки в Contact Form 7
Если хочется расширить функционал без программирования, можно воспользоваться плагинами интеграции Contact Form 7 с популярными почтовыми сервисами:
- Contact Form 7 MailChimp Extension — автоматическая подписка в MailChimp;
- Contact Form 7 to MailChimp — еще один плагин для интеграции;
- Плагины для интеграции Contact Form 7 с другими сервисами на WPSHOP.ru.
Эти решения позволяют настроить подписку без кода, используя удобный интерфейс.
Выводы и рекомендации по добавлению подписки в форму
Добавление подписки через checkbox в Contact Form 7 — простое и эффективное решение для расширения функционала формы. Важно сделать подписку добровольной, корректно обработать данные в PHP и, при необходимости, интегрировать с почтовым сервисом.
Внимательно протестируйте форму после изменений, убедитесь, что отправка работает корректно, а подписка добавляется только при выборе чекбокса. Это поможет избежать ошибок и улучшить взаимодействие с пользователями.