Telegram стал популярной платформой для публикации новостей и контента, и многие владельцы сайтов хотят автоматически импортировать сообщения из Telegram-каналов в WordPress. В этой статье разберём, как настроить автоматический импорт постов из Telegram в WordPress, используя API Telegram и WordPress, а также рассмотрим готовые решения и примеры кода.
Преимущества автоматического импорта из Telegram в WordPress
Автоматизация импорта позволяет:
- Экономить время на ручном копировании и публикации контента.
- Поддерживать сайт всегда актуальным с новыми постами.
- Расширять аудиторию за счёт дублирования контента на разных площадках.
Рассмотрим, как это можно реализовать технически.
Как работает Telegram Bot API для получения сообщений канала
Для импорта сообщений нужен Telegram-бот с доступом к нужному каналу. Бот должен быть добавлен в канал с ролью администратора, чтобы иметь доступ к сообщениям.
Telegram Bot API позволяет получать обновления через метод getUpdates, но для каналов это ограничено. Лучше использовать Webhook или Telegram API через библиотеку Telethon или MadelineProto для доступа к сообщениям канала.
Однако для большинства задач подходит создание бота и получение новых сообщений через Webhook, который передаёт данные в WordPress.
Создание Telegram-бота
1. Откройте Telegram и найдите пользователя @BotFather.
2. Создайте нового бота командой /newbot.
3. Получите токен API бота.
4. Добавьте бота в ваш канал с правами администратора.
Настройка Webhook для передачи сообщений в WordPress
Webhook — это URL на вашем сайте, куда Telegram будет отправлять обновления с сообщениями. В WordPress можно создать кастомный endpoint для приёма таких запросов.
Создание кастомного REST API endpoint в WordPress для приёма сообщений Telegram
Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:
add_action('rest_api_init', function () {
register_rest_route('wpelement/v1', '/telegram/', array(
'methods' => 'POST',
'callback' => 'wpelement_telegram_import',
'permission_callback' => '__return_true',
));
});
function wpelement_telegram_import(WP_REST_Request $request) {
$data = $request->get_json_params();
if (empty($data['message']['text'])) {
return new WP_REST_Response('No message text', 400);
}
$message = sanitize_text_field($data['message']['text']);
$chat_id = $data['message']['chat']['id'];
$message_id = $data['message']['message_id'];
// Проверка на дублирование
$existing = get_posts(array(
'meta_key' => 'telegram_message_id',
'meta_value' => $message_id,
'post_type' => 'post',
'post_status' => 'publish'
));
if (!empty($existing)) {
return new WP_REST_Response('Message already imported', 200);
}
// Создаем новый пост
$post_id = wp_insert_post(array(
'post_title' => wp_trim_words($message, 10, '...'),
'post_content' => $message,
'post_status' => 'publish',
'post_author' => 1, // ID автора
));
if (is_wp_error($post_id)) {
return new WP_REST_Response('Error creating post', 500);
}
// Сохраняем ID сообщения Telegram чтобы избежать дубликатов
update_post_meta($post_id, 'telegram_message_id', $message_id);
return new WP_REST_Response('Post created', 201);
}Этот код регистрирует REST endpoint /wp-json/wpelement/v1/telegram/, который принимает POST-запросы от Telegram с сообщениями. В нем происходит проверка на дублирование по ID сообщения и создание нового поста с содержимым сообщения.
Настройка Webhook Telegram для отправки обновлений на WordPress
Для настройки Webhook используйте следующий запрос к Telegram API (замените {BOT_TOKEN} и {YOUR_DOMAIN}):
https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url=https://{YOUR_DOMAIN}/wp-json/wpelement/v1/telegram/После успешной настройки Telegram будет отправлять все новые сообщения в канал на ваш WordPress-сайт.
Использование готовых плагинов для импорта из Telegram
Если хочется готовое решение, можно использовать плагины, например:
- Telegram for WP — поддерживает отправку уведомлений и импорт постов.
- WPCommunity — комплексный плагин с интеграцией Telegram и форумом.
Однако кастомный подход с REST API даёт максимальную гибкость и контроль.
Обработка мультимедийного контента из Telegram
Часто в Telegram публикуют не только текст, но и изображения, видео и документы. Чтобы импортировать их, надо расширить код для сохранения файлов в медиатеку WordPress.
Пример обработки фото:
if (!empty($data['message']['photo'])) {
$photos = $data['message']['photo'];
$file_id = end($photos)['file_id'];
// Запрос к Telegram API для получения ссылки на файл
$file_info = wpelement_telegram_get_file($file_id, $bot_token);
if ($file_info) {
$file_url = 'https://api.telegram.org/file/bot' . $bot_token . '/' . $file_info['file_path'];
$attachment_id = wpelement_upload_image_from_url($file_url);
if ($attachment_id) {
set_post_thumbnail($post_id, $attachment_id);
}
}
}Функции wpelement_telegram_get_file и wpelement_upload_image_from_url можно реализовать через cURL и функции WordPress для загрузки файлов.
Заключение по теме импорта из Telegram
Автоматический импорт из Telegram в WordPress — мощный инструмент для дублирования и распространения контента. Используя Telegram Bot API и кастомные REST endpoints, можно настроить стабильный и гибкий процесс импорта с поддержкой мультимедиа и проверкой дубликатов.
Рекомендуется внимательно тестировать все этапы и ограничивать доступ к REST endpoint для безопасности.