Description
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
Blocks
This plugin provides 2 blocks.
- Dfxfftc Channel Feed
- Dfxfftc Channel Browser
Installation
- Upload the plugin to the
/wp-content/plugins/directory, or install via the WordPress plugins screen. - Activate the plugin through the ‘Plugins’ menu.
- In WordPress admin, go to Settings Telegram Feed.
- Create a Telegram bot via @BotFather, paste the bot token into the settings page, and save.
- Add the bot as an administrator of every channel you want to mirror.
- Add a shortcode such as
[dfxfftc_channel_feed channel="@yourchannel" count="10"]to a page, or use the «Feed for Telegram Channels» Gutenberg block / Elementor widget.
Note: messages posted in the channel before the bot was added are not retrievable via the Bot API.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“DFX Feed for Telegram Channels” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “DFX Feed for Telegram Channels” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.3
- Add plugin icons for the WordPress.org directory page.
2.0.2
- Replace all remaining old plugin name references with new name.
2.0.1
- Sanitize nonce inputs with sanitize_text_field(wp_unslash()) before wp_verify_nonce().
- Escape _n() translation output in bulk action admin notices.
- Rename dfxTgAdmin JS global to dfxfftcAdmin for prefix consistency.
2.0.0
- Renamed plugin from «DFX Telegram Channel Feed» to «DFX Feed for Telegram Channels» to comply with WordPress.org trademark naming guidelines.
- Changed plugin slug to
dfx-feed-for-telegram-channelsand internal prefix fromdfxtgfeedtodfxfftc. - Text domain updated to
dfx-feed-for-telegram-channels. - Replaced all
_e()withesc_html_e()and wrapped unescaped__()outputs inesc_html()for proper output escaping. - Moved inline
<script>and<style>blocks to usewp_add_inline_scriptandwp_add_inline_styleper WordPress enqueue best practices. - Bundled Lottie library locally instead of loading from cdnjs.cloudflare.com.
- Documented Telegram Bot API usage in the «External services» readme section.
- Lowered admin menu position to avoid colliding with core WordPress menu items.
- Made GitHub repository public so the Plugin URI resolves correctly.
- Added DB migration path from
dfxtgfeed_*identifiers todfxfftc_*for existing installs.
1.0.2
- Fixed Plugin Check warnings: text domain now matches the plugin slug, and the unused
Domain Pathheader was removed.
1.0.1
- Removed the experimental «Sync Deletions» feature (which scraped the public
t.me/s/<channel>preview) ahead of WordPress.org submission.
1.0.0
- Internal release (not published to WordPress.org).