Telegram — популярная платформа для обмена сообщениями и контентом, и многие сайты на WordPress хотят автоматически публиковать посты из Telegram-каналов или групп. В этой статье мы разберём, как создать автоматический импорт сообщений из Telegram в WordPress с помощью библиотеки WPUnit, которая отлично подходит для построения кастомных решений автоматизации.
Почему автоматический импорт из Telegram полезен для WordPress
Если вы ведёте Telegram-канал, где публикуете новости, статьи или анонсы, автоматизация переноса этого контента на сайт позволит:
- Экономить время на ручном копировании и форматировании;
- Поддерживать актуальность сайта и привлекать трафик из поисковых систем;
- Сохранять контент в удобном формате для SEO и дальнейшего редактирования;
- Повысить вовлечённость аудитории, объединяя платформы.
WPUnit содержит мощные инструменты для работы с API и базой данных WordPress, что делает его отличным выбором для такой задачи.
Основные этапы создания автоматического импорта из Telegram
Разберём пошагово, как создать такой импорт.
1. Получение доступа к Telegram API
Для чтения сообщений из Telegram-канала нам нужен Telegram Bot и токен доступа:
- Создайте бота через
@BotFatherв Telegram и получите токен. - Добавьте бота в нужный канал с правом читать сообщения.
- Используйте Telegram Bot API для получения обновлений с сообщениями.
Подробнее про создание ботов и API можно почитать в официальной документации Telegram.
2. Настройка WPUnit для работы с Telegram API
Создадим плагин или функционал в теме, где подключим WPUnit и реализуем функцию для получения новых сообщений с помощью метода WPUnit HTTP-запроса.
function wpunit_get_telegram_updates($token, $offset = 0) {
$url = "https://api.telegram.org/bot$token/getUpdates?offset=$offset";
$response = wp_remote_get($url);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (isset($data['ok']) && $data['ok']) {
return $data['result'];
}
return false;
}
Эта функция возвращает массив новых сообщений, начиная с указанного смещения, чтобы не обрабатывать дубликаты.
3. Обработка и сохранение сообщений в WordPress
Теперь нам нужно преобразовать сообщения Telegram в посты WordPress. Для этого создадим функцию:
function wpunit_import_telegram_messages($messages) {
foreach ($messages as $message) {
if (!isset($message['message'])) {
continue;
}
$text = $message['message']['text'] ?? '';
$date = $message['message']['date'] ?? time();
// Проверяем, есть ли уже такой пост, чтобы избежать дубликатов
$existing = get_posts([
'meta_key' => 'wpunit_telegram_message_id',
'meta_value' => $message['update_id'],
'post_type' => 'post',
'post_status' => 'publish'
]);
if (!empty($existing)) {
continue;
}
// Создаём пост
$post_id = wp_insert_post([
'post_title' => wpunit_generate_title_from_text($text),
'post_content' => esc_html($text),
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s', $date),
]);
if (!is_wp_error($post_id)) {
update_post_meta($post_id, 'wpunit_telegram_message_id', $message['update_id']);
}
}
}
function wpunit_generate_title_from_text($text) {
$title = mb_substr($text, 0, 40);
return $title . (mb_strlen($text) > 40 ? '...' : '');
}
Таким образом, мы создаём уникальные посты с привязкой к ID сообщения Telegram для исключения повторного импорта.
Автоматизация с помощью WP-Cron и WPUnit Schedule Event
Чтобы импорт проходил регулярно, настроим задачу в WP-Cron, используя WPUnit Schedule Event:
function wpunit_schedule_telegram_import() {
if (!wp_next_scheduled('wpunit_telegram_import_event')) {
wp_schedule_event(time(), 'hourly', 'wpunit_telegram_import_event');
}
}
add_action('wp', 'wpunit_schedule_telegram_import');
add_action('wpunit_telegram_import_event', 'wpunit_telegram_import_callback');
function wpunit_telegram_import_callback() {
$token = 'ВАШ_TELEGRAM_BOT_TOKEN';
$last_update_id = get_option('wpunit_telegram_last_update_id', 0);
$updates = wpunit_get_telegram_updates($token, $last_update_id + 1);
if ($updates) {
wpunit_import_telegram_messages($updates);
$max_update_id = max(array_column($updates, 'update_id'));
update_option('wpunit_telegram_last_update_id', $max_update_id);
}
}
Этот код запускает импорт каждую час, получая только новые сообщения и сохраняет последний обработанный update_id в опциях WordPress.
Советы и доработки
Для улучшения импорта и адаптации под задачи можно:
- Добавить обработку мультимедийных вложений (фотографии, видео) из Telegram для более богатого контента;
- Использовать кастомный тип записи для хранения Telegram-постов;
- Поддерживать теги и категории, например, на основе хештегов из текста;
- Добавить логирование и уведомления об ошибках для мониторинга работы импорта;
- Интегрировать с плагином Clearfy Pro для оптимизации производительности.
Заключение
Автоматический импорт из Telegram в WordPress с использованием WPUnit — мощный инструмент для синхронизации контента и автоматизации публикаций. Благодаря простоте работы с API и гибкости WPUnit вы сможете быстро реализовать решение под свои задачи и масштабировать его в дальнейшем.
Если хотите готовые решения и поддержку, рекомендуем ознакомиться с плагинами на WPSHOP.RU, где регулярно появляются инструменты для автоматизации и интеграции WordPress.