Contact Form 7 — один из самых популярных плагинов для создания форм обратной связи в WordPress. Часто возникает задача не только получать сообщения на email, но и оперативно получать уведомления в мессенджерах, например, в Telegram. В этой статье мы подробно рассмотрим, как настроить отправку данных из Contact Form 7 напрямую в Telegram бот с помощью webhook и PHP.
Почему стоит отправлять данные из Contact Form 7 в Telegram
Telegram — один из самых удобных мессенджеров для оперативного общения. Отправка уведомлений о новых заявках из формы в Telegram позволяет мгновенно реагировать на запросы клиентов, не заходя каждый раз в админ-панель WordPress или почту.
Особенно полезно это для небольших команд и фрилансеров, которым важна мобильность и скорость реакции. Кроме того, Telegram поддерживает гибкую работу с ботами, что открывает возможности для дальнейшей автоматизации и интеграции.
Настройка отправки в Telegram актуальна и для сайтов на Contact Form 7, так как в стандартном функционале плагина нет встроенной поддержки мессенджеров.
Создание Telegram бота и получение токена
Первым шагом необходимо создать Telegram бота и получить от него токен — уникальный ключ для доступа к API Telegram.
- Откройте Telegram и найдите бота
@BotFather. - Отправьте команду
/newbotи следуйте инструкциям: задайте имя и уникальный username бота. - В ответ вы получите токен, который выглядит примерно так:
123456789:AAHq1X2yZ_abcdefgHIJKLMNOpqrstuv.
Этот токен понадобится для отправки сообщений из WordPress.
Настройка Contact Form 7 для отправки данных в Telegram
Для отправки данных в Telegram из Contact Form 7 мы будем использовать хук wpcf7_mail_sent, который срабатывает после успешной отправки формы. Вешаем на него свою функцию, которая будет формировать сообщение и отправлять его в Telegram API.
Добавьте следующий код в файл functions.php вашей активной темы или в отдельный плагин:
function contactform7_send_to_telegram($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) {
return;
}
$data = $submission->get_posted_data();
// Ваш Telegram токен и ID чата (замените на свои)
$telegram_token = 'ВАШ_ТОКЕН_БОТА';
$chat_id = 'ВАШ_CHAT_ID';
// Формируем сообщение
$message = "Новая заявка с сайта:\n";
foreach ($data as $key => $value) {
if (is_array($value)) {
$value = implode(", ", $value);
}
$message .= ucfirst($key) . ": " . $value . "\n";
}
// URL для отправки сообщения
$url = "https://api.telegram.org/bot" . $telegram_token . "/sendMessage?chat_id=" . $chat_id . "&text=" . urlencode($message);
// Отправка запроса
wp_remote_get($url);
}
add_action('wpcf7_mail_sent', 'contactform7_send_to_telegram');Пояснения к коду
- Используем метод
WPCF7_Submission::get_instance()для получения данных формы. - Формируем текст сообщения, перебирая все поля формы.
- Отправляем GET-запрос к API Telegram с помощью встроенной функции
wp_remote_get(). - Вам нужно заменить
ВАШ_ТОКЕН_БОТАиВАШ_CHAT_IDна реальные значения.
Как узнать chat_id для Telegram
Chat ID — идентификатор чата, куда бот будет отправлять сообщения. Чтобы узнать его:
- Откройте чат с вашим ботом в Telegram.
- Отправьте любое сообщение боту.
- Перейдите по ссылке в браузере (замените
ВАШ_ТОКЕН_БОТА):https://api.telegram.org/botВАШ_ТОКЕН_БОТА/getUpdates - В ответе API найдите поле
chatи тамid— это и есть вашchat_id.
Если хотите отправлять в групповой чат, добавьте бота в группу и проделайте то же самое.
Расширенные возможности и безопасность
Можно улучшить интеграцию, добавив:
- Отправку сообщений с форматированием Markdown или HTML — для удобного визуального восприятия.
- Обработку ошибок — проверку ответа от Telegram API и логирование проблем.
- Защиту от спама — например, добавление Google reCAPTCHA 3 или Honeypot.
Для отправки с форматированием измените URL и добавьте параметр parse_mode=HTML или parse_mode=Markdown. Например:
$url = "https://api.telegram.org/bot" . $telegram_token . "/sendMessage?chat_id=" . $chat_id . "&text=" . urlencode($message) . "&parse_mode=HTML";Пример кастомного форматирования сообщения
Чтобы сделать сообщение более читаемым, можно оформить его HTML тегами. Пример:
function contactform7_send_to_telegram($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) {
return;
}
$data = $submission->get_posted_data();
$telegram_token = 'ВАШ_ТОКЕН_БОТА';
$chat_id = 'ВАШ_CHAT_ID';
$message = "<b>Новая заявка с сайта</b>:\n";
foreach ($data as $key => $value) {
if (is_array($value)) {
$value = implode(", ", $value);
}
$message .= "<b>" . htmlspecialchars($key) . ":</b> " . htmlspecialchars($value) . "\n";
}
$url = "https://api.telegram.org/bot" . $telegram_token . "/sendMessage?chat_id=" . $chat_id . "&text=" . urlencode($message) . "&parse_mode=HTML";
wp_remote_get($url);
}
add_action('wpcf7_mail_sent', 'contactform7_send_to_telegram');Плагин для автоматизации отправки данных в Telegram
Если не хотите писать код, можно использовать готовые плагины. Например:
- Contact Form 7 Telegram — простой плагин для интеграции с Telegram.
- Telegram Notifications for Contact Form 7 — расширенные настройки уведомлений.
Однако собственный код даёт больше гибкости и контроля.
Выводы и рекомендации
Отправка данных из Contact Form 7 в Telegram бот — удобный способ быстро получать заявки. Это улучшает коммуникацию с клиентами и ускоряет реакцию.
Реализовать такую интеграцию можно вручную, написав несколько строк кода, или с помощью плагинов. В любом случае, обязательно тестируйте работу и следите за безопасностью.
Для расширения функционала WordPress советуем ознакомиться с плагинами от WPShop, которые помогут оптимизировать ваш сайт и взаимодействие с пользователями. Подробнее на wpshop.ru.