DFX Feed for Telegram Channels mirrors messages from one or more Telegram channels onto your WordPress site. Messages are fetched via a Telegram bot you control, stored locally as a custom post type, and rendered through a shortcode, Gutenberg block, or Elementor widget. Both public and private channels are supported.
Features
- Three rendering surfaces — shortcode, Gutenberg block, or Elementor widget. The block exposes per-instance styling controls (border, background, padding, typography per element).
- Full media support — photos at the highest resolution available, video and animation thumbnails, static stickers, animated TGS stickers via Lottie, and WEBM video stickers.
- Bot token never reaches the client — Telegram file URLs (which embed your bot token) are resolved server-side; the frontend only receives a token-less proxy URL. Media is cached on disk for performance.
- Edits sync automatically with a small “(edited)” marker carrying the edit timestamp.
- Background refresh every 2 minutes via WP-cron, plus on-demand refresh on frontend visits as a fallback for low-traffic sites.
- Per-message admin controls — Hide (reversible, suppresses on frontend) and Move to Trash (sticky against refresh) row actions.
- Theme template overrides — drop
dfxfftc/feed.phpordfxfftc/browser.phpinto your theme to fully customize the output. - Works with private channels if your bot is admin in them.
Usage
- Use
[dfxfftc_channel_feed channel="yourchannel" count="5"]to show the N latest messages. - Use
[dfxfftc_channel_browser channel="yourchannel"]to show the full channel history.
Behaviour and known limitations
- Bot-only access. Messages are fetched via the Telegram Bot API, which only sees posts that arrived in the channel after the bot was added. There is no access to historical messages from before that point.
- Background refresh every 2 minutes. The plugin schedules a WP-cron task that pulls fresh updates from Telegram for every channel you have stored data for. This keeps the local feed within ~2 minutes of the live channel without any manual action. Note that WP-cron only fires when traffic hits your site — on low-traffic installations you may want to disable WP-cron and trigger
wp-cron.phpfrom a real system cron job for reliable execution. The on-demand refresh on frontend visits is also kept as a fallback. - Edits sync automatically. When a message is edited in Telegram, the local copy is updated on the next refresh and a small “(edited)” marker is shown next to the date.
- Deletions are not syncable automatically. The Telegram Bot API does not notify bots about channel message deletions — there is no
deleted_channel_postupdate type. To remove a message that has been deleted in Telegram from the local feed, use the per-message “Move to Trash” admin row action. Trashed messages are sticky: refresh will not bring them back. - Hide vs. Trash. Use Hide to keep a message in the database but suppress it on the frontend (reversible via “Unhide”). Use Move to Trash for a permanent local removal.
External services
This plugin connects to the Telegram Bot API to fetch channel messages, resolve media file URLs, and verify bot credentials.
What data is sent
- Bot token (configured in Settings) — sent with every API call to authenticate your bot.
- Channel username or ID — sent when fetching messages via
getUpdatesand when testing the bot configuration viagetChatMember. - File IDs — sent when resolving media URLs via
getFileso the plugin can proxy photos, stickers, and video thumbnails to the frontend without exposing the bot token.
When data is sent
- On every WP-cron background refresh cycle (every ~2 minutes when site traffic is present).
- On frontend page loads when the on-demand refresh fallback fires (at most once per 10 minutes per channel).
- When an admin clicks “Refresh Messages” in the admin list page.
- When an admin clicks “Test Connection” on the Settings page.
- When a visitor views a page containing a message with media (the media proxy fetches the file from Telegram on first access and caches it locally).
Service provider
Telegram Bot API, provided by Telegram FZ-LLC.
- Terms of Service: https://telegram.org/tos
- Privacy Policy: https://telegram.org/privacy
- Bot API documentation: https://core.telegram.org/bots/api
License
GPL v3 or later