WP Manifestindependent plugin directory
manifest / media / podloom

PodLoom - Podcast Player for Transistor.fm & RSS Feeds

A WordPress plugin that allows you to connect to your Transistor.fm account and embed podcast episodes using Gutenberg blocks.

by WP Minute · github.com/thewpminute/podloom · website

1stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/thewpminute/podloom/archive/refs/heads/main.zip

A lightweight, high-performance WordPress plugin for embedding podcast episodes with full Podcasting 2.0 support.

Description

PodLoom is a lightweight, high-performance WordPress plugin for embedding podcast episodes with full Podcasting 2.0 support. Connect to Transistor.fm or any RSS feed and display rich podcast content including chapters, transcripts, credits, and funding buttons. Works seamlessly with both the Gutenberg block editor and Elementor.

Why PodLoom?

Lightning Fast Performance

  • ~25 KB gzipped total payload (6-15x lighter than alternatives)
  • Zero external dependencies (no React, Vue, or jQuery required)
  • Sub-second load times on mobile
  • Better Core Web Vitals and SEO scores

Accessible by Design

  • WCAG 2.1 AA compliant player controls and navigation
  • Full keyboard navigation for all interactive elements
  • Screen reader support with live announcements
  • Visible focus indicators throughout

Full Podcasting 2.0 Support

PodLoom automatically detects and displays all Podcasting 2.0 namespace tags:

  • Chapters with timestamps, images, and links
  • Transcripts (SRT, VTT, HTML, TXT formats)
  • Person tags for hosts, guests, and contributors
  • Funding buttons for listener support
  • Tabbed interface that adapts to your content

Complete Customization

  • Typography controls (fonts, sizes, colors, weights)
  • Display options (show/hide any element)
  • Brand-matching color schemes
  • Minimal styling mode for custom CSS

Features

Podcasting 2.0 Support

  • Interactive chapter list with timestamps and click-to-seek
  • Multiple transcript format support (SRT, VTT, HTML, TXT, JSON)
  • Host and guest profiles with photos and role labels
  • Support/donate buttons with custom text
  • Automatic tab generation based on available content

Transistor.fm Integration

  • Easy API integration with your Transistor.fm account
  • Intuitive Gutenberg block for embedding episodes
  • Multiple shows support
  • Episode search with pagination
  • Light and dark player themes
  • Three display modes: Latest Episode, Specific Episode, Playlist

RSS Feed Support

  • Works with any standard podcast RSS feed
  • Automatic Podcasting 2.0 tag detection
  • Multiple feed management with validation
  • Customizable player with typography controls
  • Background color and minimal styling options
  • Playlist mode with browsable episode list and auto-play next

Subscribe Buttons

  • Display subscribe/follow buttons for all major podcast platforms
  • Supports 15+ platforms: Spotify, Apple Podcasts, Amazon Music, Pocket Casts, Overcast, and more
  • Auto-sync from Transistor.fm - Subscribe links imported automatically when you add your API key
  • Three color modes: Brand colors, monochrome, or custom color
  • Flexible layouts: Horizontal, vertical, or grid arrangements
  • Full customization: Icon size slider (16-64px), spacing control, optional labels with font settings
  • Available as Gutenberg block and Elementor widget
  • Manual link entry for RSS feeds and non-Transistor podcasts

Elementor Integration

  • Native Elementor widget with drag-and-drop support
  • Searchable episode selector with type-to-filter
  • Live preview in the Elementor editor
  • All display modes: Latest Episode, Specific Episode, Playlist
  • Full Podcasting 2.0 rendering for RSS sources
  • Respects global PodLoom styling settings

Performance & Caching

  • Smart multi-layer caching system
  • Atomic cache updates (race-condition-free)
  • On-demand transcript loading
  • Configurable cache duration

Installation

  1. Upload the podloom-podcast-player folder to /wp-content/plugins/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Go to Settings → PodLoom Settings to configure

For Transistor.fm Users

  1. Log in to your Transistor Dashboard
  2. Go to Account settings → API section
  3. Copy your API key
  4. Paste it into the plugin settings

For RSS Feed Users

  1. Go to Settings → PodLoom Settings → RSS Feeds tab
  2. Enable RSS feeds
  3. Add your podcast RSS feed URL
  4. Select episodes from the block editor

For Elementor Users

  1. Ensure Elementor 3.0.0 or higher is installed and activated
  2. Configure your podcast sources in Settings → PodLoom (API key or RSS feeds)
  3. Open any page with Elementor
  4. Search for "PodLoom" in the widget panel
  5. Drag the PodLoom Episode widget onto your page
  6. Select your podcast source and episode

Frequently Asked Questions

What is Podcasting 2.0?

Podcasting 2.0 is an open standard that extends RSS feeds with new features like chapters, transcripts, person credits, and funding links. If your podcast host supports these features, PodLoom will automatically display them.

Why aren't Podcasting 2.0 features showing?

  1. Verify your podcast host supports Podcasting 2.0 tags
  2. Check that the features are enabled in your host's dashboard
  3. Refresh the RSS feed in PodLoom settings
  4. Clear the cache

Why aren't transcripts loading?

  1. Ensure the transcript URL is publicly accessible
  2. Check browser console for CORS errors
  3. Verify transcript format is supported (SRT, VTT, HTML, TXT)

How do I update episodes?

  1. Clear the cache in Settings → PodLoom → General
  2. Check the cache duration setting
  3. Refresh the RSS feed manually

Can I customize the player styling?

Yes! You can use the built-in typography controls, or enable "Minimal Styling Mode" and add your own custom CSS.

Screenshots

  1. Episode player with Podcasting 2.0 tabs
  2. Chapter list with timestamps and images
  3. Transcript viewer
  4. Admin settings - RSS Feeds tab
  5. Admin settings - Typography controls
  6. Block editor episode selection
  7. Elementor widget with searchable episode dropdown
  8. RSS Playlist mode with browsable episode list

Changelog

2.17.1

  • Security: HTML Sanitization: Centralized RSS description sanitization strips javascript:, data:, and vbscript: hrefs and adds rel="noopener noreferrer" to external links
  • Security: Transcript Proxy: Enforces http/https scheme, adds a second SSRF validation layer, and caps response size before reading the body into memory
  • Security: Image Cache: URL validation and scheme check before fetching; response size capped at the HTTP client level via limit_response_size
  • Security: Image Cache AJAX: Endpoint now requires a nonce; queue items validated before processing
  • Security: Pagination: Public episode endpoints clamp limit to a minimum of 1 to prevent division-by-zero edge cases
  • Security: Block Editor: Client-side HTML sanitizer added to episode preview to strip unsafe content before rendering

2.17.0

  • Playlist Search: Added real-time search and filtering to the podcast episode playlist

2.16.0

  • Smart Cache Duration: Cache duration now dynamically adjusts based on podcast release patterns (daily shows refresh more often, inactive feeds less)
  • Per-Feed Scheduling: Cron system checks each feed against its own optimal refresh interval
  • Retry with Backoff: Failed feed fetches now use exponential backoff to avoid hammering unresponsive servers
  • Persistent Storage: New database-backed storage ensures episodes survive cache clears
  • FOUC Prevention: Players now fade in smoothly instead of flashing unstyled content
  • Lazy Initialization: Dynamically-loaded players (AJAX, page builders) auto-initialize via CSS animation detection
  • Playlist Prefetching: Large playlists automatically prefetch more episodes as you scroll
  • Responsive Images: Episode artwork now uses srcset for optimal image sizes across devices
  • Audio Accessibility: Native audio elements properly hidden from assistive tech (custom controls handle accessibility)

2.15.0

  • Configurable Episode Limit: New "Max Episodes" setting in General tab to control how many episodes are parsed from RSS feeds (default: 50)
  • Removed Playlist Cap: Playlist mode no longer limited to 100 episodes in both Gutenberg block and Elementor widget
  • Flexible Feed Parsing: Parse as many episodes as your feed contains for podcasts with large back catalogs

2.14.2

  • Cache Fallback: Playlist mode now uses freshly-parsed feed data as fallback when cache operations fail
  • Error Prevention: Fixed potential fatal error when cache retrieval returns unexpected data types
  • Improved Reliability: RSS playlist player renders successfully even during temporary caching issues

2.14.1

  • Image Caching Improvement: Image caching now happens at render time instead of during feed parsing
  • Instant Toggle: Enabling/disabling "Cache Images Locally" takes effect immediately without needing to clear cache
  • Better Architecture: Feed cache now stores canonical remote URLs; local URL resolution happens at render time
  • Documentation: Updated caching guide with new render-time caching details

2.14.0

  • Mobile Tab Navigation: Horizontal scrolling tabs on mobile instead of vertical stacking
  • Touch-Friendly Design: 44px minimum touch targets meeting Apple accessibility guidelines
  • Active Tab Indicator: Underline indicator using currentColor for theme compatibility
  • Smooth Scrolling: Momentum scrolling on iOS with hidden scrollbar for native feel
  • Documentation: Updated styling guide with mobile tab navigation details

2.13.0

  • Accessibility Improvements: Comprehensive WCAG 2.1 AA compliance enhancements across admin and frontend
  • Keyboard Navigation: Full keyboard support for chapters, playlist episodes, transcript timestamps, and tabs
  • Screen Reader Support: Live announcements for episode changes, chapter navigation, and playback state
  • ARIA Enhancements: Proper roles, states, and labels for all interactive elements
  • Focus Indicators: Visible focus styles for all buttons, tabs, chapters, and playlist items
  • Admin Accessibility: Improved form labels, accordion accessibility, table headers, and AJAX feedback
  • Dynamic State Updates: Play/pause button labels update based on playback state
  • Tab Panel Improvements: Arrow key navigation, proper aria-hidden on inactive panels
  • Transcript Loading States: aria-busy and aria-expanded states during transcript loading
  • Iframe Accessibility: Descriptive titles added to Transistor.fm embedded players

2.11.1

  • Subscribe Buttons Block: New Gutenberg block to display podcast subscribe/follow buttons
  • Subscribe Buttons Widget: Elementor widget for subscribe buttons with full customization
  • 15+ Platform Support: Spotify, Apple Podcasts, Amazon Music, Pocket Casts, Overcast, Castbox, Castro, Deezer, iHeartRadio, Pandora, Player FM, Podcast Addict, TuneIn, YouTube Music, YouTube, and RSS
  • Auto-Sync from Transistor: Subscribe links automatically imported when adding your API key
  • Icon Customization: Adjustable icon size (16-64px) with smooth slider control
  • Color Modes: Brand colors (platform colors), monochrome, or custom hex color
  • Layout Options: Horizontal, vertical, or grid arrangements
  • Optional Labels: Show platform names with customizable font size and family
  • Icon Spacing: Control gap between icons (4-48px)
  • Background Sync: Subscribe link sync runs in background for faster settings saves
  • Bug Fixes: Fixed RSS feed validation status not updating after adding feeds
  • Security: Fixed SSRF vulnerability in feed validation, added input validation to color utilities
  • Code Quality: Fixed undefined constant, improved error handling and response consistency

2.9.0

  • RSS Playlist Mode: Display multiple episodes in a browsable playlist with an Episodes tab
  • Episode Order Control: Choose episodic (newest first) or serial (oldest first) ordering for playlists
  • Click-to-Play Episodes: Select any episode from the list to immediately start playback
  • Auto-Play Next: Automatically plays the next episode when the current one finishes
  • Now Playing Indicator: Animated visual indicator shows which episode is currently playing
  • Dynamic P2.0 Updates: Chapters, Transcripts, and Credits tabs update when switching episodes
  • Configurable Episode Count: Set maximum episodes (5-100) displayed in the playlist
  • Elementor Playlist Support: RSS Playlist mode now available in Elementor widget
  • Asset Minification: JavaScript and CSS now minified for faster page loads (~66% smaller)
  • Security Enhancement: Added sanitization for playlist episode data

2.8.0

  • Elementor Integration: New native Elementor widget for embedding podcast episodes
  • Searchable Episode Selector: Type-to-filter dropdown makes finding episodes fast and easy
  • Live Editor Preview: See your player render in real-time within Elementor
  • Full Feature Parity: All display modes (Latest, Specific, Playlist) available in Elementor
  • Podcasting 2.0 in Elementor: RSS sources display chapters, transcripts, and person tags
  • Unified Source Selector: Choose between Transistor shows and RSS feeds from one dropdown

2.7.1

  • Player Border Styling: Customize border color, width, style, and radius
  • Funding Button Customization: Style font, colors, and border radius for funding buttons
  • Image Caching: Cache podcast cover art locally in the media library for faster loading
  • Conditional HTTP Requests: Efficient RSS updates using ETag/Last-Modified headers
  • Improved UI: Minimal Styling Mode moved to Advanced Typography section with CSS class reference
  • RSS Feeds in Default Show: Select RSS feeds as your default show in General Settings

2.5.3

  • Security hardening and WordPress coding standards improvements
  • Performance optimizations for cache clearing
  • Fixed deprecated function usage

2.5.1

  • Full Podcasting 2.0 Support: Chapters, transcripts, person tags, and funding buttons
  • Tabbed Interface: Automatic tabs for Description, Credits, Chapters, Transcripts
  • Smart Caching: Multi-layer caching with atomic updates
  • Security Hardening: JSON input sanitization, transcript size limits
  • Editor/Frontend Parity: Block editor now matches frontend display exactly
  • Player Height Control: Configurable max height with scrollable content

2.1.1

  • Bug fixes for transcript loading
  • Improved error logging
  • Security policy updates

2.0.0

  • RSS Feed Support with multiple feed management
  • Typography Controls for RSS players
  • Background Colors for episode blocks
  • Minimal Styling Mode
  • Description Limits
  • Live Preview for typography
  • Welcome Tab with video tutorial

1.1.0

  • Added caching functionality
  • Added Danger Zone reset option
  • Cache duration controls

1.0.0

  • Initial release
  • Transistor.fm API integration
  • Gutenberg block with three display modes

Upgrade Notice

2.17.1

Security patch. Hardens RSS description rendering, the transcript proxy, image caching, and public AJAX endpoints. Recommended for all users.

2.17.0

New playlist search! Filter podcast episodes in real time directly within the player.

2.16.0

Major caching and performance improvements! Smart cache duration adapts to podcast release patterns, playlist prefetching for smoother scrolling, and responsive images for faster loading.

2.15.0

New configurable episode limit! Control how many episodes are parsed from RSS feeds via Settings > General. Playlist mode cap of 100 episodes has been removed.

2.14.2

Fixes a potential fatal error in RSS playlist mode when cache operations fail. Recommended update for all users.

2.14.1

Image caching now takes effect immediately when toggled. No need to clear cache or refresh feeds.

2.14.0

Mobile tab navigation now uses horizontal scrolling for better usability. Includes touch-friendly 44px targets and theme-aware active indicators.

2.13.0

Major accessibility update! Full keyboard navigation, screen reader support, and WCAG 2.1 AA compliance improvements. Recommended for all users.

2.11.1

New Subscribe Buttons feature! Display platform icons (Spotify, Apple Podcasts, etc.) with auto-sync from Transistor.fm. Includes security fixes and bug fixes for RSS feed validation.

2.9.0

New RSS Playlist mode displays multiple episodes in a browsable list with auto-play next, now-playing indicator, and dynamic Podcasting 2.0 tab updates.

2.8.0

New Elementor widget for drag-and-drop podcast embedding. Includes searchable episode selector and full Podcasting 2.0 support.

2.7.1

New styling options for player borders and funding buttons, plus image caching and efficient RSS updates.

2.5.3

Security and performance improvements. Recommended update for all users.

2.5.1

Major update with full Podcasting 2.0 support. If your podcast host supports chapters, transcripts, or person tags, they will now display automatically.

Privacy Policy

PodLoom does not collect any personal data from your website visitors. The plugin:

  • Connects to Transistor.fm API only when configured with an API key
  • Fetches RSS feeds from URLs you configure
  • Proxies transcript requests to bypass CORS restrictions (no data stored)
  • Caches podcast data locally in your WordPress database

No analytics, tracking, or external connections are made beyond the podcast sources you configure.

Disclaimer

PodLoom is not affiliated with, endorsed by, or sponsored by WordPress, the WordPress Foundation, WordPress.com, Automattic, Elementor, or Transistor.fm. All trademarks and registered trademarks are the property of their respective owners.