Проблема: отсутствие мгновенных уведомлений о заказах в Telegram
Многие владельцы WooCommerce-магазинов хотят получать уведомления о новых заказах напрямую в Telegram, чтобы быстро реагировать на поступающие заявки. В стандартном WooCommerce такой функционал отсутствует. Можно использовать сторонние плагины, но они часто оказываются громоздкими или платными. Лучший способ — настроить отправку уведомлений через Telegram Bot API с помощью кастомного кода.
Диагностика задачи: что нужно и как проверить
Перед настройкой убедитесь, что:
- Вы создали Telegram-бота через
@BotFatherи получилиТокен бота. - Знаете свой
chat_id— идентификатор чата или группы, куда хотите получать уведомления. - В WooCommerce настроены базовые уведомления о заказах (статусы заказов).
Проверить chat_id можно, отправив запрос к API или используя бота @userinfobot в Telegram.
Пошаговое решение: добавляем отправку уведомлений в Telegram
1. Создаем Telegram-бота и получаем токен
В Telegram найдите пользователя @BotFather, отправьте команду /newbot и следуйте инструкциям. В итоге получите токен вида 123456789:ABCdefGhIjKLmnoPQRsTUVwxyZ.
2. Узнаем chat_id
Чтобы узнать chat_id, отправьте в Telegram боту @userinfobot команду /start — он вернет ваш идентификатор. Если нужен chat_id группы, добавьте туда бота и выполните специальный скрипт (см. ниже).
3. Добавляем код в functions.php или в плагин
Вставьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function send_telegram_message($message) {
$token = 'ВАШ_ТОКЕН_БОТА';
$chat_id = 'ВАШ_CHAT_ID';
$url = "https://api.telegram.org/bot" . $token . "/sendMessage";
$args = array(
'body' => array(
'chat_id' => $chat_id,
'text' => $message,
'parse_mode' => 'HTML'
)
);
$response = wp_remote_post($url, $args);
return !is_wp_error($response);
}
add_action('woocommerce_thankyou', 'notify_new_order_telegram', 10, 1);
function notify_new_order_telegram($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if (!$order) return;
$items = '';
foreach ($order->get_items() as $item) {
$product_name = $item->get_name();
$quantity = $item->get_quantity();
$items .= "$product_name x $quantity\n";
}
$message = "<b>Новый заказ #{$order->get_order_number()}</b>\n" .
"Сумма: {$order->get_formatted_order_total()}\n" .
"Клиент: {$order->get_billing_first_name()} {$order->get_billing_last_name()}\n" .
"Телефон: {$order->get_billing_phone()}\n" .
"Email: {$order->get_billing_email()}\n" .
"Товары:\n" . $items .
"Статус: {$order->get_status()}";
send_telegram_message($message);
}4. Как узнать chat_id группы для уведомлений
Добавьте бота в группу и отправьте в группу любое сообщение. Затем используйте следующий скрипт для получения chat_id (например, через WP-CLI или отдельный PHP файл):
<?php
$token = 'ВАШ_ТОКЕН_БОТА';
$response = file_get_contents("https://api.telegram.org/bot$token/getUpdates");
var_dump($response);
?>В выводе ищите chat с полем id — это и есть chat_id группы.
Проверка результата после внедрения
Чтобы проверить, что уведомления работают:
- Создайте тестовый заказ в WooCommerce.
- После оформления заказа проверьте чат/группу Telegram — должно прийти сообщение с деталями.
- Если сообщение не пришло, проверьте логи сервера, ошибки PHP и доступность Telegram API.
Частые ошибки и как их исправить
- Неверный токен бота: проверьте правильность токена, нет лишних пробелов.
- Неправильный chat_id: перепроверьте chat_id, особенно для групп — бот должен быть участником группы.
- Бот заблокирован или ограничен: убедитесь, что бот не заблокирован в чате и имеет права на отправку сообщений.
- Ошибка HTTPS или API: проверьте доступность сайта Telegram и наличие SSL у вашего сервера.
- Функция wp_remote_post отключена: на некоторых хостингах функции HTTP могут быть запрещены — уточните у провайдера.
Практические советы по безопасности и производительности
- Не храните токен бота в открытом виде в коде, лучше использовать
define('TELEGRAM_BOT_TOKEN', 'ваш_токен');вwp-config.phpили через настройки плагина. - Ограничьте уведомления только статусом заказа
processingилиcompleted, чтобы не получать уведомления от отмененных заказов. - Логируйте ошибки отправки сообщений в отдельный файл для быстрого анализа.
- Для крупных магазинов с интенсивным трафиком реализуйте очередь отправки уведомлений, чтобы не блокировать процесс оформления заказа.
Сравнение вариантов реализации уведомлений о новых заказах
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Плагин Telegram Notification | Простая установка, минимальный код | Может быть тяжелым, платным, не гибким | Для быстрого старта без кастомизации |
| Кастомный код через functions.php | Максимальный контроль, легковесность | Требует навыков программирования | При необходимости точной настройки и оптимизации |
| Использование сервисов автоматизации (Zapier, Integromat) | Широкие возможности интеграций | Дополнительные затраты, задержки в уведомлениях | Если нужны мультиканальные оповещения |