Как отправить форму на Telegram из WordPress без плагинов

Интеграция формы обратной связи на сайте с Telegram — удобный способ получать сообщения от пользователей напрямую в мессенджер, минуя почту. Многие ищут, как сделать это без использования плагинов, чтобы минимизировать нагрузку на сайт и повысить безопасность. В этой статье рассмотрим, как реализовать отправку данных формы WordPress на Telegram с помощью простого кода и Telegram Bot API.

Создание Telegram-бота и получение токена

Первым шагом нужно создать Telegram-бота. Для этого:

  1. Откройте Telegram и найдите бота @BotFather.
  2. Отправьте команду /newbot и следуйте инструкциям: задайте имя и уникальное имя пользователя бота.
  3. После создания вы получите токен — длинную строку, которая используется для отправки сообщений через API.

Запишите токен — он понадобится в коде.

Получение chat_id для отправки сообщений

Чтобы бот мог отправлять сообщения в ваш чат, нужно узнать chat_id. Для этого:

  1. Отправьте любое сообщение вашему боту в Telegram.
  2. Перейдите по адресу в браузере, подставив свой токен:
    https://api.telegram.org/botТОКЕН/getUpdates
  3. В ответе найдите параметр chat -> id — это и есть chat_id.

Можно использовать chat_id и для групповых чатов, если добавить туда бота и выдать права.

Создание HTML-формы для отправки данных

Добавим на страницу WordPress простую форму обратной связи. Пример HTML-кода:

<form method="post" action="" id="wptest-telegram-form">
  <label for="name">Имя:</label>
  <input type="text" name="name" id="name" required />
  <br />
  <label for="message">Сообщение:</label>
  <textarea name="message" id="message" required></textarea>
  <br />
  <input type="submit" name="wptest_send" value="Отправить" />
</form>

Форма простая и понятная, собирает имя и сообщение пользователя.

Обработка формы и отправка сообщения в Telegram через PHP

Далее добавим код обработки формы в файл functions.php вашей темы или в отдельный плагин. В коде реализуем функцию wptest_send_form_to_telegram, которая проверит отправку формы, сформирует сообщение и отправит его через API.

function wptest_send_form_to_telegram() {
    if (isset($_POST['wptest_send'])) {
        $name = sanitize_text_field($_POST['name']);
        $message = sanitize_textarea_field($_POST['message']);

        $bot_token = 'ВАШ_ТОКЕН_БОТА';
        $chat_id = 'ВАШ_CHAT_ID';

        $text = "Новое сообщение с сайта:\n";
        $text .= "Имя: " . $name . "\n";
        $text .= "Сообщение: " . $message;

        $send_text = urlencode($text);
        $url = "https://api.telegram.org/bot" . $bot_token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $send_text;

        $response = wp_remote_get($url);

        if (is_wp_error($response)) {
            echo '<div style="color:red;">Ошибка при отправке сообщения в Telegram.</div>';
        } else {
            echo '<div style="color:green;">Сообщение успешно отправлено.</div>';
        }
    }
}
add_action('wp_head', 'wptest_send_form_to_telegram');

Объяснение кода:

  • Проверяем, отправлена ли форма с помощью isset($_POST['wptest_send']).
  • Очищаем входные данные с помощью функций WordPress sanitize_text_field и sanitize_textarea_field.
  • Формируем текст сообщения и кодируем его для URL.
  • Делаем GET-запрос к Telegram API для отправки сообщения.
  • Проверяем ответ и выводим сообщение об успехе или ошибке.

Как улучшить безопасность и UX формы

Для безопасности и удобства пользователей стоит добавить несколько улучшений:

1. Проверка nonce для защиты от CSRF

Добавьте nonce-поле в форму:

<?php wp_nonce_field('wptest_telegram_form_action', 'wptest_telegram_form_nonce'); ?>

И проверяйте его в обработчике:

if (!isset($_POST['wptest_telegram_form_nonce']) || !wp_verify_nonce($_POST['wptest_telegram_form_nonce'], 'wptest_telegram_form_action')) {
    wp_die('Ошибка безопасности.');
}

2. Использование AJAX для отправки без перезагрузки

Чтобы улучшить пользовательский опыт, можно отправлять форму через AJAX. Пример минимальной реализации:

jQuery(document).ready(function($) {
    $('#wptest-telegram-form').submit(function(e) {
        e.preventDefault();
        $.post(ajaxurl, $(this).serialize(), function(response) {
            alert(response.data.message);
        });
    });
});

В PHP тогда нужно добавить обработчик AJAX-запроса.

3. Валидация данных на клиенте и сервере

Для предотвращения ошибок и спама проводите валидацию не только на клиенте (JavaScript), но и на сервере.

Пример расширенного кода с AJAX и nonce

Ниже пример функции для обработки AJAX-запроса и отправки сообщения в Telegram:

function wptest_ajax_send_to_telegram() {
    check_ajax_referer('wptest_telegram_form_action', 'nonce');

    $name = sanitize_text_field($_POST['name']);
    $message = sanitize_textarea_field($_POST['message']);

    if (empty($name) || empty($message)) {
        wp_send_json_error(['message' => 'Пожалуйста, заполните все поля']);
    }

    $bot_token = 'ВАШ_ТОКЕН_БОТА';
    $chat_id = 'ВАШ_CHAT_ID';

    $text = "Новое сообщение с сайта:\nИмя: " . $name . "\nСообщение: " . $message;
    $send_text = urlencode($text);
    $url = "https://api.telegram.org/bot" . $bot_token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $send_text;

    $response = wp_remote_get($url);

    if (is_wp_error($response)) {
        wp_send_json_error(['message' => 'Ошибка при отправке сообщения в Telegram']);
    } else {
        wp_send_json_success(['message' => 'Сообщение успешно отправлено']);
    }
}
add_action('wp_ajax_wptest_send_to_telegram', 'wptest_ajax_send_to_telegram');
add_action('wp_ajax_nopriv_wptest_send_to_telegram', 'wptest_ajax_send_to_telegram');

Не забудьте подключить скрипт с AJAX-обработчиком и передать параметр ajaxurl, а также nonce.

Полезные плагины для интеграции Telegram с WordPress

Если вы хотите готовое решение с расширенными возможностями, посмотрите плагины на WPSHOP.ru:

  • WP Telegram — популярный плагин для отправки уведомлений и сообщений.
  • My Popup — можно связать с Telegram для уведомлений о подписках.

Но если нужна легкая и кастомная интеграция — лучше пользоваться кодом, описанным выше.

WordPress: как создать собственный тип записи (custom post type)
23.11.2025
Как отключить автообновления в WordPress без риска для сайта
18.03.2026
Как создать адаптивный шаблон WordPress с нуля
15.11.2025
Как использовать хуки в WordPress: практическое руководство
03.12.2025
Как избежать проблемы с повторной регистрацией пользователей в WooCommerce
28.04.2026