Telegram стал одним из самых популярных мессенджеров для общения и распространения контента. Многие сайты на WordPress хотят автоматически импортировать сообщения, новости или медиа из Telegram каналов или ботов, чтобы обновлять свой сайт без ручного копирования. В этой статье мы разберем, как реализовать автоматический импорт контента из Telegram бота в WordPress с помощью программного кода и плагинов.
Почему автоматический импорт из Telegram важен для WordPress
Если у вас есть Telegram канал или бот, который регулярно публикует полезную информацию, вы можете повысить вовлеченность пользователей сайта, автоматизировав перенос сообщений на сайт. Это позволяет:
- Экономить время на ручном копировании
- Поддерживать сайт актуальным с минимальными усилиями
- Расширить аудиторию, предоставляя контент в разных форматах
Однако для этого понадобится наладить связь между Telegram API и WordPress, что требует технических знаний и понимания, как работают обе платформы.
Основы работы с Telegram Bot API
Для автоматического импорта нам понадобится Telegram бот, который будет получать сообщения из нужного канала или чата. Далее эти сообщения передаются на сайт WordPress по API или через вебхуки.
Основные шаги:
- Создать Telegram бота через
@BotFather - Получить токен доступа к API
- Настроить получение обновлений (поллинг или вебхуки)
- Обрабатывать полученные данные и отправлять их на сайт
Документация Telegram Bot API: https://core.telegram.org/bots/api
Как получить сообщения из Telegram канала или бота
Если сообщения публикуются через бот, то получить их можно напрямую через API. Если это канал, то нужно добавить бота администратором канала и использовать метод getUpdates или вебхуки для получения новых постов.
Пример получения сообщений с помощью PHP и метода getUpdates:
function wpdesk_get_telegram_updates($bot_token) {
$url = "https://api.telegram.org/bot" . $bot_token . "/getUpdates";
$response = wp_remote_get($url);
if (is_wp_error($response)) {
return [];
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (!$data['ok']) {
return [];
}
return $data['result'];
}Этот код можно запускать по расписанию через WP-Cron для регулярной проверки новых сообщений.
Создание кастомного поста с импортированным сообщением Telegram
После получения данных из Telegram нужно сохранить их в WordPress. Для этого удобно использовать кастомный тип записи (Custom Post Type) или стандартные посты.
Пример функции для создания поста на основе сообщения Telegram:
function wpdesk_create_post_from_telegram($message) {
if (empty($message['text'])) {
return 0;
}
$post_data = [
'post_title' => wpdesk_sanitize_title_telegram($message['text']),
'post_content' => esc_html($message['text']),
'post_status' => 'publish',
'post_type' => 'post',
];
$post_id = wp_insert_post($post_data);
return $post_id;
}
function wpdesk_sanitize_title_telegram($text) {
$title = mb_substr($text, 0, 50);
return wp_strip_all_tags($title);
}Таким образом, каждое новое сообщение из Telegram будет автоматически сохраняться как новый пост на сайте.
Обработка медиафайлов из Telegram
Часто в Telegram публикуют не только текст, но и изображения, видео или документы. Для полного импорта контента важно сохранять и их.
Сначала нужно получить file_id из сообщения, затем скачать файл через API и загрузить в медиа библиотеку WordPress.
Пример загрузки файла из Telegram и добавления в медиатеку WordPress:
function wpdesk_download_telegram_file($bot_token, $file_id) {
// Получаем путь к файлу
$url_get_file = "https://api.telegram.org/bot" . $bot_token . "/getFile?file_id=" . $file_id;
$response = wp_remote_get($url_get_file);
if (is_wp_error($response)) {
return 0;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (!$data['ok']) {
return 0;
}
$file_path = $data['result']['file_path'];
$file_url = "https://api.telegram.org/file/bot" . $bot_token . "/" . $file_path;
// Загружаем файл во временную директорию
$tmp = download_url($file_url);
if (is_wp_error($tmp)) {
return 0;
}
// Подготавливаем массив для функции wp_handle_sideload
$file = [
'name' => basename($file_path),
'type' => mime_content_type($tmp),
'tmp_name' => $tmp,
'error' => 0,
'size' => filesize($tmp),
];
$sideload = wp_handle_sideload($file, ['test_form' => false]);
if (isset($sideload['error'])) {
@unlink($tmp);
return 0;
}
// Добавляем файл в медиатеку
$attachment = [
'post_mime_type' => $sideload['type'],
'post_title' => sanitize_file_name($sideload['file']),
'post_content' => '',
'post_status' => 'inherit'
];
$attach_id = wp_insert_attachment($attachment, $sideload['file']);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $sideload['file']);
wp_update_attachment_metadata($attach_id, $attach_data);
return $attach_id;
}После получения ID вложения его можно прикрепить к посту через set_post_thumbnail или вставить в контент.
Лучшие плагины для интеграции Telegram с WordPress
Если вы хотите использовать готовые решения, обратите внимание на следующие плагины:
- WP Telegram — позволяет отправлять уведомления из WordPress в Telegram и импортировать сообщения
- Telegram Bot & Channel — интеграция Telegram бота с сайтом для автоматического создания постов
- WP Telegram Auto Publish — автоматическая публикация сообщений из Telegram в WordPress
Для загрузки и настройки плагинов посетите официальный каталог плагинов WPShop.
Настройка cron-задачи для регулярного импорта сообщений
Чтобы импорт происходил автоматически, используйте WP-Cron. Добавьте функцию в файл functions.php вашей темы или в плагин:
function wpdesk_schedule_telegram_import() {
if (!wp_next_scheduled('wpdesk_telegram_import_event')) {
wp_schedule_event(time(), 'five_minutes', 'wpdesk_telegram_import_event');
}
}
add_action('wp', 'wpdesk_schedule_telegram_import');
add_action('wpdesk_telegram_import_event', 'wpdesk_handle_telegram_import');
function wpdesk_handle_telegram_import() {
$bot_token = 'ВАШ_ТОКЕН_БОТА';
$updates = wpdesk_get_telegram_updates($bot_token);
foreach ($updates as $update) {
if (isset($update['message'])) {
wpdesk_create_post_from_telegram($update['message']);
}
}
}
// Регистрируем интервал в 5 минут
add_filter('cron_schedules', function($schedules){
$schedules['five_minutes'] = [
'interval' => 300,
'display' => 'Каждые 5 минут'
];
return $schedules;
});Эта настройка позволит вашему сайту автоматически проверять новые сообщения и импортировать их в виде постов.
Советы по безопасности и производительности
При работе с Telegram API и автоматическим импортом важно:
- Хранить токен бота в безопасном месте и не публиковать в открытом доступе
- Обрабатывать ошибки и не допускать дублирование постов (например, с помощью проверки уникального ID сообщения)
- Ограничивать частоту запросов к API, чтобы не получить блокировку
- Оптимизировать загрузку медиафайлов, избегая избыточного использования дискового пространства
Для избежания дублей можно сохранять ID сообщений в пользовательских мета данных или отдельной таблице и проверять перед добавлением.
Заключение
Автоматический импорт контента из Telegram бота в WordPress — отличный способ расширить функционал сайта и упростить обновление новостей и материалов. Используя Telegram Bot API, базовые функции WordPress и WP-Cron, можно создать гибкую систему импорта, которая будет работать без участия администратора.
Для более сложных задач и интеграций можно использовать готовые плагины из WPShop, либо развивать кастомное решение на основе примеров кода из статьи.