Plugin Directory

Podlove Podcast Publisher

The one and only next generation podcast publishing system. Seriously. It's magical and sparkles a lot.


  • add warning in system report for users with default permalink settings (which is problematic for some podcast clients)
  • enhancement: delete caches in all blogs when changing a network template
  • enhancement: delete caches when changing the template default assignment
  • enhancement: do not rely on openssl module
  • fix: add flattr setting to contributors general tab
  • fix: duplicate episodes when using podlove.episodes template accessor
  • fix: correctly fire plugin activation hooks in network mode
  • fix: ensure network module is activated correctly
  • fix: "Add New" link in empty list tables


  • fix issue with users that have open_basedir set, which lead to all assets being invalid


  • fix: remove obsolete "Add New" template button from network templates screen
  • fix: template autoinsert does not use deprecated "id" parameter
  • fix: template widget does not use deprecated "id" parameter
  • fix: duplicate episodes in feeds
  • fix: some server configurations (especially on shared webhosting) break cURLs ability to follow HTTP redirects. We now check for that configuration and, if necessary, resolve the URL manually before continuing normally.
  • fix: XSS vulnerabilities in contributors search
  • fix: Template accessor contributor.id now correctly returns the id, not the uri. contributor.uri is the new accessor to get the uri.
  • fix: Filtering contributions by id is now correctly affected by other filters, like group and role. Until now, podcast.contributors({id: 'james', role: 'on-air'}) always returned James, no matter if he had the given role or not.
  • add "Add New Contributor" item to contributor select list. Selecting it opens the screen to add a new contributor.
  • add Twig version to system report


Networks: WordPress Multisite Support is Here

  • dedicated WordPress Multisite support
  • "My Sites" menu features podcast covers and menus include often used pages like "Podlove Dashboard" and episodes
  • Network Dashboard provides a birds-eye view over your podcast empire
  • Network-Templates that are accessible in every podcast
  • Podcast lists: give templates access to multiple podcasts at once, allowing you to automatically list all podcasts in your network, the 10 last episode releases in your network and much more


We added a happy bunch of widgets to make your life easy.

  • Podcast Information: Display cover, subtitle and summary of your podcast
  • Recent Episodes: Display a list of recent episodes, with cover art and duration if you like
  • Template: Display any Publisher template in a widget area
  • Podcast License

The Subscribe Button Widget now defaults to "Big with Logo" and auto-width. It has also been renamed to "Podcast Subscribe Button" to be distinguishable from the new standalone plugin.


  • add accessors {{ podcast.landingPageUrl }}, {{ podcast.subscribe_button }} (see http://docs.podlove.org/reference/template-tags/#podcast)
  • add accessor {{ flattr.button }} (see http://docs.podlove.org/reference/template-tags/#flattr)
  • add accessor {{ episode.podcast }}
  • add query parameters to ``{{ contributor.episodes }}`:

    • group: Filter by contribution group. Default: ''.
    • role: Filter by contribution role. Default: ''.
    • post_status: Publication status of the post. Defaults to 'publish'
    • order: Designates the ascending or descending order of the 'orderby' parameter. Defaults to 'DESC'.
      • 'ASC' - ascending order from lowest to highest values (1, 2, 3; a, b, c).
      • 'DESC' - descending order from highest to lowest values (3, 2, 1; c, b, a).
    • orderby: Sort retrieved episodes by parameter. Defaults to 'publicationDate'.
      • 'publicationDate' - Order by publication date.
      • 'recordingDate' - Order by recording date.
      • 'title' - Order by title.
      • 'slug' - Order by episode slug.
      • 'limit' - Limit the number of returned episodes.


  • add gender contribution statistics to dashboard
  • add expert setting "Allow to skip feed redirects"
  • add warning in tracking settings when default permalink structure is used
  • add support for Auphonic cover art
  • add support for Jetpack "Publicize" module to podcast post type
  • add warning when open_basedir is set to system report
  • add daily cleanup of logging table (only keep entries of previous 4 weeks)
  • contributor editing has a tabbed interface
  • improved Podlove Dashboard performance
  • Open Graph title does not include episode subtitle any more. If a subtitle is available, it is put in front of the summary in the description tag.
  • fix: remove Jetpack "Site Icon" from podcast feeds
  • fix: empty template editor when last template is deleted
  • fix: empty caches when a scheduled episode gets published
  • fix analytics episode average calculation for ancient episodes

API changes

  • Flattr parameter in [podlove-episode-contributor-list] now defaults to "no". If you need to reactivate it, use [podlove-episode-contributor-list flattr="yes"]
  • [podlove-web-player] was renamed to [podlove-episode-web-player] to avoid clashes with the standalone web player plugin. For now, the old shortcode still works.
  • [podlove-subscribe-button] was renamed to [podlove-podcast-subscribe-button] to avoid clashes with the standalone button plugin. For now, the old shortcode still works.


  • fix: template editor cursor position in Safari (by changing to a different theme that doesn't use bold styles)
  • fix: double escaped feed enclosure URLs when using non-pretty-permalinks


  • fix: missing flattr attribute for contributors
  • fix: subscribe button description is properly wrapped in p-tags
  • fix: faulty valid file if check returns "unreachable" but includes a Content-Length header
  • fix: more thoughtful handling of ETags when validating files prevents failing updates
  • fix: "NaN" analytics should display properly now
  • fix: off-by-one display in analytics
  • fix: don't HTML-encode quotes in episode title/subtitle/summary since it leads to invalid feeds
  • add trakt.tv to the services list
  • add support for RSS channel image tag


Allow Non-Admins to access Analytics

Analytics have a new capability called "podlove_read_analytics". You can provide access to, for example, editors, using the following code snippet:

function podsnip_add_capability() {
    // default roles: editor, author, contributor, subscriber
    $role = get_role('editor');
add_action( 'admin_init', 'podsnip_add_capability');

You can add snippets using the "Code Snippets" plugin.


  • fix: use proper HTTP method to create/update/delete templates
  • fix: don't remove URLs from chapter marks when saving
  • fix: optional episode form elements can be saved


  • fix: include missing YAML library
  • fix: namespacing issue in uninstall procedure
  • fix: debug tracking example file must be downloadable



  • fix: properly sanitize episode form data (fixes "A wild Backslash appears")


  • format download numbers in episode list
  • remove check for PHP setting allow_url_fopen because we don't rely on it any more


Download Analytics

You want to know more about who listens to your podcast? We got you covered.

We spent months of research and prototyping to find a reliable way of tracking. We are confident that our approach works and produces trustworthy data. If you have not done so yet, you have to activate tracking in Expert Settings -> Tracking.

If you are interested in all the technical details, head over to http://docs.podlove.org/guides/download-analytics/.

But what you are seeing now is just the beginning. We have a plethora of ideas on how to give you even more insight into the data available. Stay tuned!

We are curious what you think about the current analytics interface? What do you love? What do you hate? What do you miss? Head over to our new community site and share your thoughts: https://community.podlove.org/


  • fix: use home_url() instead of site_url() to generate tracking URLs
  • fix: tracking export does not get stuck forever when it fails once
  • fix: disappearing podcast description settings
  • fix: add function to repair button that removes duplicate episode entries
  • fix: template editor does not forget changes if you reselect a template after changing it
  • fix: improve uninstall routine
  • fix: wrong month when choosing Auphonic productions
  • fix: deactivate Jetpack's OpenGraph when the Publisher OpenGraph module is active

Other Changes

  • add services: miiverse, prezi
  • add missing services via repair button
  • Bitlove: add <bitlove:guid> to RSS feed and use this to identify files
  • moved episode GUID regeneration into separate metabox because it's rarely required
  • always check media files when opening an episode edit page
  • move podcast cover art from media tab to description tab

  • Improved feed settings

    • check for missing and duplicate slugs
    • check for missing asset assignment
    • show prominent warning for detected problems
    • provide contextual help to better understand what's required and why

Removed Functionality

  • removed module "Auphonic Production Data"
  • removed the following shortcodes (use Template Tags instead)
    • [podlove-episode-subtitle]
    • [podlove-episode-summary]
    • [podlove-episode-slug]
    • [podlove-episode-duration]
    • [podlove-episode-chapters]
    • [podlove-episode field="..."]
    • [podlove-podcast field="..."]
    • [podlove-show field="..."]
    • [podlove-podcast-license]
    • [podlove-episode-license]
    • [podlove-contributors] (use [podlove-episode-contributor-list] instead)
    • [podlove-contributor-list] (use [podlove-episode-contributor-list] instead)
  • removed the following template tags
    • {{ contributor.publicemail }} (use social module instead)
    • {{ license.html }} (use {% include '@core/license.twig' %} instead)


  • fix: catch failed IP categorizations
  • fix: solve PHP notice
  • add custom icon to close template fullscreen mode
  • add custom contributor css to look nicely in twentyfifteen theme


  • enable some WordPress template tags in Twig Templates: is_archive(), is_post_type_archive(), is_attachment(), is_tax(), is_date(), is_day(), is_feed(), is_comment_feed(), is_front_page(), is_home(), is_month(), is_page(), is_paged(), is_preview(), is_search(), is_single(), is_singular(), is_time(), is_year(), is_404(), is_main_query()
  • enable episode filtering by category slug: podcast.episodes({category: "kitten"})
  • redesigned template editor interface
  • fix feed cache issue which lead to enclosure URL mixups
  • display PHP deprecation warning aggressively for everyone below 5.4


  • Cache feed items. This drastically reduces load when no feed proxy is used; especially in a "full feed" with many episodes.
  • Add Luxembourgish to languages


Subscribe Button fixes & enhancements:

  • don't pass undiscoverable feeds to the button
  • don't show a button if no feed is available
  • change defaults to "big-logo" and "autowidth"
  • fix issue with internal format


Say hello to the Podlove Subscribe button, the Universal button to subscribe to buttons in the desired podcast client or player website. It ships as a widget, so you can easily display it on your site. For more finegrained positioning, you can use the [podlove-subscribe-button] shortcode.

More info on those sites:

Other Changes

  • fix contributor.episodes: only show published episodes
  • fix redirect form: remove url validation
  • fix HEAD requests for download URLs
  • redirects are counted and displayed in the redirect settings



  • fix social repair module
  • empty rss feeds now render properly
  • fix issue of randomly breaking URLs
  • fix missing files when using auto-publish feature by automatically validating files before publishing
  • fix "open" link for last contributor donations item
  • fix javascript error in license ui

New Features

  • add basic client-side input validation to avoid typing errors: Leading and trailing whitespace will be removed automatically. URL and email fields are automatically syntax checked.
  • add support for scientific networks: ResearchGate, ORCiD, Scopus
  • add explicit support dor "Duplicate Post" plugin: duplicated episodes now regenerate GUIDs and contributions are copied, too

Enhancements & Others

  • contributors form:
    • switch public name and real name fields
    • remove public email field (see deprecations)
    • move contact email field to general section
  • ADN module: add option to not fall back on episode cover when no episode image is present
  • adjust Bitlove script so it plays well with https sites
  • include date in tracking export filename
  • move web player settings to expert settings
  • public contributor emails are handled by the social module now, instead of being a contributor attribute

Deprecations & Migration

If you are using {{ contributor.publicemail }} in your templates, you should change it to something like the following:

{% for service in contributor.services({type: "email"}) %}
    <a target="_blank" href="{{ service.profileUrl }}">{{ service.rawValue }}</a>
{% endfor %}


  • fix bug in contribution counting
  • simplify internal cache key handling to avoid technical issues
  • support more licenses (CC4.0, CC0, Public Domain)
  • tracking: don't count HEAD requests
  • tracking: add manual migration notice to delete accidentally recorded HEAD requests


  • improve HHVM compatibility
  • resolve bug concerning internal article linking
  • use WordPress method to generate default episode slugs for better results (if you are using a plugin that changes permalink slug behavior, that affects episode slugs now, too)


Episode Form Improvements

  • Reorder components
  • Display episode title in episode meta box
  • Auto-generate media file slug based on the episode title. This is useful if your file slugs match the episode title. But don't worry, you can still change it to your liking if you prefer a different naming scheme.


  • Podlove Dashboard supports screen options
  • fix contribution counting in contributor table (you may have to hit the "repair" button in Podlove > Support if you still see wrong numbers)
  • fix tracking data export
  • fix missing OpenGraph metadata
  • improved redirects: added sortability and individual entries can be deactivated without being deleted
  • contributor.id is accessible via template API now

As mentioned before, we will be phasing out PHP 5.3 soon. Please read the corresponding blog post for more details: http://podlove.org/2014/08/14/podlove-publisher-2-phasing-out-php-5-3/


  • fix caching issue (cache keys were too long in last update, resulting in no cache hits at all)
  • fix error when creating a new episode


Improvements to media file slugs

  • Slugs may contain slashes now. This allows storing asset files in subfolders and using the WordPress media uploader to manage files.
  • Media file validation is more consistent: when you get a green checkmark, the file is guaranteed to be valid and reachable.


  • Once we release Publisher 2.0, we will increase the minimum PHP version to 5.4 and recommend 5.5. A notice is now displayed in the system report if you are running a version requiring an upgrade.
  • Rename a method to avoid a bug in early PHP 5.3 versions


  • tracking now includes range headers
  • plugin-migrations are more robust now
  • add caching for OpenGraph module
  • fix escaping in database logger
  • fix feed validator for sites not using "pretty permalinks"
  • fix dashboard box state saving
  • fix generation of faulty URLs when tracking was on but pretty permalinks off
  • fix auto-insertion of nonexisting templates
  • fix routing issues when /%category%/%postname% is used as permalink structure
  • fix rare cache concurrency issues by introducing a 24h auto-expiry
  • remove "Critical Podlove Warnings" — they are scary and don't help a lot


  • Hotfix: remove wrong output in HTML sites
  • rework support page


Various Fixes and Enhancements

  • Supply web player API with more data: "publicationDate" contains an ISO-8601 date and "show.url" the URL to the show.
  • Auphonic UI improvement: When selecting a production, the "Select existing production" option disappears.
  • Don't pass redirect=no parameter to feed URLs
  • Ensure web player IDs are unique to avoid rendering bugs
  • Fix caching bug that lead to disappearing web player and download buttons
  • Fix redirection UI bug
  • Flush rewrite rules after migrations to avoid broken links



A simple yet effective caching strategy has been implemented. This is used to cache rendered site segments. A complete cache invalidation happens when podcast related data changes. This should be a good start since such data rarely changes (mostly when a new episode is published). In a Multisite setup, each site handles its cache separately.

This is implemented using the Transients API. By default, WordPress uses the database as a caching backend. If you want to squeeze out even more speed, consider installing a Persistent Cache Plugin which replaces the database with a more efficient caching backend, such as memcached or APC. That might require some fiddling around, though.

Caching can be deactivated in the wp-config.php with the following line: define('PODLOVE_TEMPLATE_CACHE', false);

  • Cache Publisher templates
  • Cache feed discovery header
  • Cache Bitlove widget
  • Other minor performance improvements


  • There is now a default template containing the player and download section
  • Episode contributions can be sorted by comment and position, for example: episode.contributors({orderby: "comment", order: "DESC"}) or episode.contributors({orderby: "position", order: "ASC"})
  • Iterate over the list of episode tags: {% for tag in episode.tags({order: "DESC", orderby: "count"}) %} {{ tag.name }} {% endfor %}


  • Display available processing time in Auphonic production box
  • Episode slugs may contain a wider variety of characters now, such as umlauts.
  • Feeds now only contain contributors with an URI. Also, output of contributors in feeds can be filtered by group and/or role.
  • New donation option for Auphonic Credits
  • Remove scary debug output on failed media file validations. This can be found in the log now.
  • Fix Auphonic authentication issue by providing the whole certificate chain
  • Fix contributor related feed rendering issue


We decided to remove the "Force Download" feature. Its purpose was to guarantee that a click on a download button results in a download dialogue, rather than playing the media file in the browser. The way we implemented it worked, but came with many downsides. Just to name two of them: 1) We doubled the traffic and significantly increased load since we had to pull all the bytes through the webserver in addition to the download server (even if both are the same). 2) It was impossible to support HTTP range requests. That means no client was able to resume a broken or paused download. It also seemed to lead to strange behaviour in the web player.

But there is another, superior way to force downloads: configure your download server. The important setting here is Content-Disposition.

In Apache, you need the headers module (a2enmod headers on Debian-ish distributions). Then you can add this to your configuration:

<FilesMatch "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub|zip)$">
    Header set Content-Disposition attachment


$HTTP["url"] =~ "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub|zip)$" {
    setenv.add-response-header = ("Content-Disposition" => "attachment")


if ($request_filename ~ "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub)$"){
    add_header Content-Disposition 'attachment';

Other Changes

  • Trim whitespace around some URLs that appear in the podcast feed.
  • Update certificate for auth.podlove.org
  • Fix an issue with saving contributors in Podlove > Podcast Settings > Contributors



  • Never redirect media file URLs to trailing-slash-URLs (WordPress has a habit of adding a trailing slash to every URL via redirect. That is undesirable here, since it create two download intents).
  • Handle empty user agent strings
  • Do not write anything to tracking-database unless tracking is in analytics mode.


  • Compress export files via gzip.
  • Add tracking data to export files.



  • For increased compatibility (we are looking at you, iTunes), new file URLs without parameters are used when analytics are active.
  • Add &ptm_file=<episode-slug>.<file-extension> parameter to the end of Parameter-URLs, so tools like wget generate a filename with a correct extension by default.
  • Feed URLs now support a &tracking=no parameter, which dynamically disables tracking parameters in feed enclosures. This is introduced for debugging purposes and is only mentioned here for the sake of completeness.
  • Fix PHP glitch that caused tracking to go into "Tracking URL Parameters" mode even when it was disabled

ADN Module

  • Fix issue that could lead to repostings
  • Fix tags description
  • Messages longer than 256 characters will be shortened now and "…" will be appended


  • Fix: reenable "force download" option


We discovered incompatibilities between our tracking implementation and some clients. To avoid further trouble, we are deactivating tracking until we solve the issue. The option is still available, we just switch it off automatically with this release and it isn't on by default any more.

If you're of the curious type, feel free to activate it and tell us any issues you run into. Thanks!


  • Fix: When tracking was active but no geo-location database available, downloads would fail. This exception is handled correctly now. You can check the status of tracking and the geo-location database in Expert Settings > Tracking


  • Feature: Services in templates can be filtered by their type. That way, you can, for example, iterate over all Twitter accounts via podcast.services({type: "twitter"}). The previous "type" parameter (for choosing between "social", "donation" and "all") has been renamed to "category". All default templates have been adjusted accordingly but if you were using this API in a custom template, you need to change it.
  • Feature: podcast.contributors in templates are sorted by name now. You can change the order by writing podcast.contributors({order: "DESC"}). When using grouping, each group will be sorted separately.
  • Feature: podcast.contributors({scope: "global-active"}) is limited to contributors with at least one contribution in a published episode. To list contributors ignoring this limitation, use podcast.contributors({scope: "global"}). "global-active" is the new default.
  • Feature: Allow manual posting of ADN announcements
  • Feature: Add contributor support to ADN announcements
  • Feature: We are beginning to implement download intent tracking and statistics. As a first step, we are now tracking download intents. A following release will contain an analytics section where you can examine the statistics.
  • Feature: The feed <link> can be configured in Expert Settings > Website now. It still defaults to the home page. Other options include the episode archive and any WordPress page.
  • Enhancement: remove encryption for "protected feed" password to prevent autofill browser features to destroy contents
  • Enhancement: default WordPress search now covers episode subtitle, summary and chapters
  • Enhancement: add Vimeo, Gittip and about.me to services
  • Enhancement: The expert setting "Display episodes on front page together with blog posts" changed to "Include episode posts on the front page and in the blog feed". So if you set it, episodes will additionally appear in /feed. However, only in the form of a post. You will not find enclosures, iTunes metadata etc. in /feed items.
  • Enhancement: sort chapters imported from Auphonic by time
  • Enhancement: Changes to feed list: redirect URL is shown and added screen options to hide columns
  • Enhancement: Added Publisher version as an attribute to the export file. If a file is imported with a version different from the current Publisher, a warning is displayed.
  • Fix: enable group and role selection in contributor shortcodes
  • Fix: failing delayed ADN broadcast
  • Fix: stop sending ADN announcements for old episodes
  • Fix: refresh of Auphonic presets keeps current preset
  • Fix: contributor.episodes does not return duplicate episodes any more
  • Fix: Jabber URL scheme is now prefixed with jabber:
  • Fix: Display podcast subtitle in feed description (it was the blog description before)
  • Fix: Hide contributors missing a URI from feeds
  • Fix: Escaping issue when saving podcast description settings


  • Feature: Direct episode access in templates via {{ podcast.episodes({slug: 'pod001'}).title }}
  • Feature: Episodes in templates can be filtered and ordered, for example {{ podcast.episodes({orderby: 'title', 'order': 'ASC'}) }}. For details, see podcast.episodes documentation
  • Feature: Direct contributor access in templates via {{ podcast.contributors({id: 'john'}).name }}
  • Feature: Add shortcode [podlove-podcast-social-media-list], which lists all social media accounts for the podcast
  • Feature: Add shortcode [podlove-podcast-donations-list], which lists all donation accounts for the podcast
  • Feature: Add tag support for Auphonic
  • Enhancement: Add "Save and Continue Editing" buttons to all table based management screens
  • Enhancement: Use translations for month and day names in formatted template dates (if a language other than english is used)
  • Enhancement: Add refresh buttons for Auphonic preset selector
  • Enhancement: Pass more data to web player (as preparation for the next release)
  • Enhancement: Improved export format: It has its own namespace and a version now. Publisher version and export date are included as XML comments. XML elements are indented for better readability.
  • Remove default content for new templates
  • Fix: "Network Activate" works now
  • Fix: group and role filters for [podlove-podcast-contributor-list] shortcode work as expected now
  • Fix: Add services and donations to export format
  • Fix: episode.player in episode loops, outside the WordPress loop works now
  • Fix: Auphonic chapter integration issue
  • Fix: Instagram URL scheme


  • Fix: contributor services will be saved correctly
  • Enhancement: add a donation column to contributor management table


Changes to the Templating System


and episode.publicationDate are DateTime objects now. Available accessors are: year, month, day, hours, minutes, seconds. For custom formatting, use episode.recordingDate.format("Y-m-d H:i:s") for example. Calling episode.recordingDate directly is still supported and defaults to the format configured in WordPress.

Other Changes

  • Enhancement: Add refresh buttons for ADN patter and broadcast channel selectors
  • Fix: Avoid "Grey Goo" scenario of self-replicating contributors


  • Hotfix: solve migration issue


Changes to the Templating System

  • New filter: padLeft(padCharacter, padLength) can be used to append a character to the left of the given string until a certain length is reached. Example: {{ "4"|padLeft("0",2) }} returns "04";
  • For consistency {{ contributor.avatar }} is now an object. To render an HTML image tag, use {% include '@contributors/avatar.twig' with {'avatar': contributor.avatar} only %}.
  • {{ episode.duration }} has been turned into an object to enable custom time renderings. The duration object has the following accessors: hours, minutes, seconds, milliseconds and totalMilliseconds.


  • {{ episode.duration }} should not be used any more. The default templates are updated but if you have used it in a custom template, you must replace it. Example: {{ episode.duration.hours }}:{{ episode.duration.minutes|padLeft("0",2) }}:{{ episode.duration.seconds|padLeft("0",2) }}
  • {{ episode.license.html }} and {{ podcast.license.html }} are deprecated. Use {% include '@core/license.twig' %} for the previous behaviour of choosing the correct license based on context. If you want to be more specific, use {% include '@core/license.twig' with {'license': episode.license} %} or {% include '@core/license.twig' with {'license': podcast.license} %}.

Other Changes

  • Feature: ADN Module supports broadcasts
  • Enhancement: Contributor shortcode defaults to donations="yes" to avoid confusion
  • Enhancement: [podlove-episode-downloads] now uses templates internally
  • Enhancement: Added 500px, Last.fm, OpenStreetMap and Soup to Services
  • Enhancement: Use custom contributor social/donation titles as icon titles
  • Enhancement: Template form has a "Save Changes and Continue Editing" button now
  • Enhancement: feed validation is asynchronous now and has improved performance
  • Enhancement: Licenses have a new interface and are compatible with Auphonic now: they can be imported from a finished production and are included when creating a production.
  • Enhancement: Default MySQL character set is utf8 now when creating tables
  • Enhancement: Add datepicker for episode recording date
  • Fix: all default contributors appear in new episodes again
  • Fix: change Tumblr URLs from https to http since Tumblr does not support them
  • Fix: [podlove-podcast-contributor-list] shows the correct contributors now
  • Fix: internal template warning when accessing empty contributor roles or groups
  • Fix: episode rendering when no files are available
  • Fix: flattr script in rss feeds
  • Fix: importer issue where sometimes modules would not activate properly


  • Feature: add template filter formatBytes to format an integer as kilobytes, megabytes etc. Example: {{ file.size|formatBytes }}
  • Feature: New accessor {{ file.id }}. This is required to generate download forms.
  • Fix: [podlove-episode-contributor-list] shortcode: Firstly, the "title" attribute works again. Secondly, output by group is optional now and defaults to "not grouped" (as it was before 1.10). If you are using contributor groups and would like grouped output, use [podlove-episode-contributor-list groupby="group"]
  • Fix: division by zero bug in statistics dashboard
  • Fix: parse time in statistics dashboard correctly as normalplaytime
  • Fix: add missing template accessor {{ episode.recordingDate }}
  • Remove separate "publication date" field in episodes. Instead, use the episode post publication date maintained by WordPress. It can be accessed via {{ episode.publicationDate }}
  • Fix: missing contributor-edit-icon on last entries


  • Fix: podlove-episode-contributor-list shortcode: add support for "group" and "role" attributes
  • Fix: podlove-episode-contributor-list shortcode: fix broken flattr button
  • Fix: feed widget: only compress if zlib extension is loaded


All-new, mighty Templating system

You can now use the Twig Template Syntax in all templates. Access all podcast/episode data via the new template API. Please read the Template Guide to get started.

If you have used templates before, please note that some shortcodes are now DEPRECATED. That means they still work but will be removed at some point. Following is a list of affected shortcodes and their replacements:

Instead of [podlove-web-player], write {{ episode.player }}.

Instead of [podlove-podcast-license], write {{ podcast.license.html }}.

Instead of [podlove-episode-license], write {{ episode.license.html }}.

Instead of [podlove-episode field="subtitle"], write {{ episode.subtitle }}. Instead of [podlove-episode field="summary"], write {{ episode.summary }} etc. When in doubt, look at the Episode Template Reference.

Changing the podcast data shortcodes works exactly the same: Instead of [podlove-podcast field="title"], write {{ podcast.title }} etc. When in doubt, look at the Podcast Template Reference.

Other Changes

  • Feature: The Podlove dashboard includes a section for feeds if you activate the "Feed Validation" module. It is intended as an overview for the state of your feeds. It shows the latest modification date, the number of entries, compressed and uncompressed size and the latest item. Additionally, you can validate your feeds against the w3c feed validator right from the dashboard.
  • Feature" Better Bitlove integration. There is a new setting in Podlove > Podcast Feeds > Directory Settings called "Available via Bitlove?". It checks if there is a corresponding Bitlove feed and verifies it on a regular basis.
  • Feature: Support for the oEmbed format
  • New shortcode: [podlove-episode-list] lists all episodes including their episode image, publication date, title, subtitle and duration chronologically. This replaces the archive pages generated by the Archivist - Custom Archive Templates plugin, if you are using it right now.
  • New shortcode: [podlove-feed-list] lists all public feeds
  • New shortcode: [podlove-global-contributor-list] shows all podcast contributors and lists related episodes.
  • New shortcode: [podlove-podcast-contributor-list] shows regular podcast contributors
  • Enhancement: The feed title may now include the asset title for easier discovery. This setting can be found at Podlove > Feed Settings
  • Changed shortcode: [podlove-contributor-list] is DEPRECATED. Please use [podlove-episode-contributor-list] instead.
  • Enhancement: add "autogrow" feature to chaptermarks text field
  • Enhancement: globally hide the migration-tool banner once dismissed rather than per-client via cookie
  • Fix: When setting the chapter asset to manual, delete all chapter caches to avoid hiccups
  • Fix: Contributor links in the backend use an ID now rather than the contributor slug. That way they work when no slug is set.
  • Fix ADN backslash escaping issue in post titles
  • Fix: all contributions can be deleted


  • Enhancement: Take over chapters when switching from chapter asset to manual
  • Enhancement: Contributor tables look better in a wider range of themes
  • Fix: Auphonic module: Buttons cannot be clicked again while the corresponding action is in progress


  • Enhancement: Split podcast settings into tabs.
  • Enhancement: Import/Export module supports contributors and contributions
  • Enhancement: Separate "default contributors" and "podcast contributors". You can configure default contributors in "Contributor Settings > Defaults" and podcast contributors in "Podcast Settings > Contributors". Display podcast contributors using the shortcode [podlove-podcast-contributor-list].
  • Enhancements: Plethora of adjustments in contributor interfaces to avoid confusions and smoothen workflows
  • Feature: Contributions may have a public comment (to describe the context of the person), which can be displayed in contributor lists.
  • Fix: Skip contributions with missing contributors.


  • Fix: episode images when using manual entry
  • Fix: do not include episodes in blog feed
  • Fix: paged feed calculation of number of pages when using global Publisher default
  • Fix: remove unused IDs from contributor lists


  • Fix: several contributor episode form bugs
  • Fix: sum of all media file sizes in dashboard statistics
  • Add lost bugfix: Bundle crt file to avoid StartSSL trust issues.


  • Enhancement: WordPress has an option to close commenting for posts after a certain amount of days. This now also applies to podcast episodes.
  • Enhancement: Fallback for Contributor Names.
  • We had to change the generated Flattr URL for contributors in episodes to a less error prone scheme. Flattr counts for those buttons will therefore reset to 0 (the actual clicks are not lost! they are just not displayed).
  • fix sum of all media file sizes in dashboard statistics
  • fix license URLs
  • fix feed paging issue
  • Fix: Feed Item Limit is now displayed correctly
  • Fix: Ignore deleted contributors if they were assigned to an Episode or Podcast
  • Fix: activation / deactivation of multiple modules at once works as expected now
  • add filter "podlove_enable_gzip_for_feeds" to disable gzip feed compression
  • Contributor role and group columns will be hidden if no roles or groups were added


  • fix and enhance dashboard statistics
  • gender statistics: use episode contributions instead of contributors for counting


  • fix redirect issue after podcast migrations
  • fix legacy ADN module publishing issue
  • only show itunes:complete in feeds if it is set avoid a feedvalidator.org bug
  • add experimental episode fun facts in dashboard
  • add PayPal Button link in contributor settings
  • other contributor admin enhancements
  • contributor public name defaults to real name now


  • Contributor Module improvements
    • New icon graphics
    • "Contributor Groups" as a new way to divide contributors by participation. For example, you might want to have a "Team" group and one for supporting contributions.
    • No more default roles. It's just not possible to provide a sensible default set. So just add the ones you need :) (existing roles will not be deleted)
    • The contributors defined in Podcast Settings > Contributors are now the default contributors for new episodes
    • Reworked contributor management table. Better use of space, hideable columns, avatars and more.
    • Reworked episode contributor table. Avatars, edit links and more.
    • Support for more services
    • ... and a bunch of other tweaks
  • Web Player Update: compatible with WordPress theme "Twenty Fourteen"
  • Fix: don't gzip feeds when zlib compression is active
  • Fix: episode media file checkbox width for WP3.8
  • Fix: menu icons for WP3.8


  • Fix: gzip feeds on compatible systems only (avoids failing feed generation)
  • Fix: Feed paging (again)


  • Fix: provide global feed limit default on setup
  • Fix: managing contributor roles no longer outputs permission issues
  • Fix: corrected a faulty "Add New" contributor link
  • Fix: paged feeds were broken


  • Fix: Module: Contributors prevent initial migration to import duplicate contributors
  • Fix: Module: Contributors Fix faulty default roles

1.9.0 / 1.9.1

New Module: Contributors

Podcasts are not possible without their active communities. Huge contributions are being made behind the scenes and nobody notices except the podcaster. The contributors module shines light on all those diligent people. It's now easy to manage contributors of an episode and list them on the blog. The list contains references to their social profiles and the donation service Flattr. Shortcode to display them in an episode post: [podlove-contributor-list].

Simple Protected Feeds

You can now protect some or all of your feeds using HTTP authentication. Authenticate via a defined username and password or use the WordPress user database as backend.

License Selector

We built an interface to generate a Creative Commons license for your podcast and episodes. You can still use a custom URL and name if you don't want a CC license. Use [podlove-podcast-license] and [podlove-episode-license] to display them in your episode posts.

Other Changes

  • Feature: Add "Expert Settings" option to always redirect to media files instead of forcing a browser download. This is interesting for you if you want to minimize traffic on your server hosting the Publisher.
  • Feature: add global setting to configure feed item limits
  • Feature: Set "itunes:explicit" tag per episode if you want to (you have to activate the feature in the expert settings)
  • Enhancement: Feeds are delivered with gzip compression if possible
  • Enhancement: Support for temporary redirects in expert settings
  • Fix: keep ?redirect=no flag in paged feeds
  • Fix: Module: Import/Export Importing episodes no longer causes floods of ADN posts.
  • Fix: Module: Auphonic respect Auphonic chapter offset
  • DEPRECATED: podlove-contributors shortcode. Use podlove-contributor-list instead


  • Feature: Update Web Player to 2.0.17 (for realsies). It fixes an issue with icon/font display.


  • Feature: Update Web Player to 2.0.17
  • Bugfix: Fix PHP 5.3 issue in import module


  • Feature: New module for Import/Export. Now you can easily move all your podcast data to another WordPress instance.
  • Feature: Add support for <itunes:complete> tag. If there won't be any additional episodes, you can go to Podlove > Podcast Settings and activate this setting.
  • Bugfix: Bundle crt file to avoid StartSSL trust issues.


  • Hotfix: Removes incompletely updated license feature which wasn't supposed to be in that release in the first place. Sorry!


  • Feature: Update Web Player to 2.0.16
  • Enhancement: Render Twitter and OpenGraph tags using a DOM-Generator to avoid all possible escaping issues.
  • Enhancement: Allow multiple mime types for web player config slots. Fixes an issue with Firefox and Opus.
  • Enhancement: I CAN HAZ SECURETEH?! auth.podlove.org haz https nao.
  • Bugfix: Module settings screen rendering issue with PHP 5.3
  • Bugfix: Fix link to shortcode documentation

1.8.7 / 1.8.8

  • Enhancement: Refined Auphonic Workflow: Always import duration and slug; new option to automatically start productions after creation; new option to automatically publish episodes as soon as the production is ready
  • Hotfix: escaping issue


  • Enhancement: Change feed redirect hook and priority so it works better with Domain Mapping plugin
  • Enhancement: Extend OpenGraph metadata by post thumbnail and episode description (thanks smichaelsen!)
  • Feature: Update Web Player to 2.0.15
  • Fix: Solve rare issue where first chapter line would be ignored
  • Fix: Firefox display issue in migration assistant

1.8.5 (2013-08-11)

  • Fix: JavaScript issue preventing certain UI elements from working correctly (Tagging, Auphonic, …)

1.8.4 (2013-07-27)

  • Fix: Performance issue in Auphonic plugin

1.8.3 (2013-07-27)

  • Enhancement: dates with leading zeros in Auphonic module
  • Enhancement: Auphonic UI smoothifications
  • Enhancement: Update assets after successful production

1.8.2 (2013-07-27)

Auphonic integration Enhancements

  • Preset is only applied once
  • Add Text for "Open Production" button
  • "Start Production" button more prominent

1.8.1 (2013-07-27)

  • Fix Release

1.8.0 (2013-07-27)

  • Auphonic Module Update. You are now able to manage productions directly from within the Publisher without visiting Auphonic at all. As always, any feedback is more than welcome.
  • App.net Module Update. Support for Patter, language annotations and delayed posting.
  • Enhancement: Control sequence in which audio elements are printed in the web player. This encourages browsers to use superior codecs (rather than mp3).

1.7.3 (2013-07-18)

  • Enhancement: Show expected and actual mime type in log when an error occurs
  • Bugfix: Fix Bitlove integration
  • Bugfix: Correctly hide content in password protected posts
  • Bugfix: ADN Plugin annonced new episode every time the episode got saved
  • Fix some PHP 5.4 Strict warnings

1.7.2 (2013-07-11)

  • Feature: Update Web Player to 2.0.13
  • Bugfix: Feed web player with existing/valid files only
  • Bugfix: Downloads work without JavaScript enabled
  • Bugfix: Episode previews should work now
  • Bugfix: Migration Assistant: you are now able to import file slugs containing dots
  • Bugfix: Fix podlove_alternate_url issue

1.7.1 (2013-07-06)

  • Logging Module: Deactivate sending of mails until we figure out what causes some misbehaviours
  • Enhancement: System Report: check for SimpleXML availability
  • Bugfix: ADN Announcements should work with all kinds of templates now

1.7.0-alpha (2013-07-03)

  • New Module: App.net. Right now, it lets you announce new podcast episodes on ADN whenever you publish a new one. It's the groundwork for more ADN integrations. (Thanks @chemiker!)
  • New Module: Auphonic. We did not shy away from writing a completely new module to present to you the best Auphonic integration the world has seen in a WordPress plugin. It replaces the previous one ("Auphonic Production Data"). You are now able to import Auphonic production data without the need for a production description file. Like the ADN module, this lays the groundwork for much deeper Auphonic integration. (Thanks @chemiker!)
  • Enhancement: Return the correct content type when initiating a download so devices may choose intelligently whether to save the file or open it in a certain application.
  • Enhancement: Remove download button styles so the style adjusts based on used browser and theme
  • Bugfix: Fix incompatibility to some file name schemes
  • Bugfix: Fix 404 status for paged feedburner feeds


  • Bugfix: use NPT library


  • Fix release issues


  • Enhancement: Move file types settings to expert settings
  • Enhancement: Saving a template redirects to template list
  • Enhancement: System Report is a readonly textarea
  • Enhancement: Group modules
  • Enhancement: When creating an asset: if that web player slot is not taken yet, assign it automatically
  • Enhancement: Accept time formats with minutes > 59 if no hours are given
  • Bugfix: Fix "Chapters Visibility" setting


  • Enhancement: When validating, ignore timeouts (so files don't disappear from feeds just because one request took too long)
  • Enhancement: When episode permalinks are invalid, try to autoresolve by switching to "Use Post Permastruct"
  • Bugfix: Fix some expert setting migration issues
  • Bugfix: Hide invalid media files from downloads


  • Feature: Feeds are sortable
  • Feature: You can revalidate single media files in the dashboard
  • Enhancement: Use pretty status icons
  • Enhancement: Add "sortable handle" for asset and feed lists, so the sortability feature is more discoverable
  • Enhancement: Add "Podlove" entry to WordPress toolbar
  • Enhancement: Organize "Expert Settings" into tabs
  • Enhancement: Don't log "File not Modified"
  • Bugfix: Activate feature "Activate asset for all existing episodes" for pending episodes
  • Bugfix: Solve issue with chapter asset cache invalidation
  • Bugfix: Solve chapter encoding issue when chapters start with umlauts
  • Bugfix: Fix video display in some themes
  • Other small UI changes in various places


  • Bugfix: use manual chapter entries if available
  • Bugfix: PSC assets work properly
  • Bugfix: URL magic doesn't interfere with other post types
  • Bugfix: deactivate preload in web player


  • Bugfix: "Display episodes on front page together with blog posts" works again
  • Bugfix: chapters at 0 seconds are not ignored any more
  • Bugfix: correctly show feed title in deletion confirmation
  • Bugfix: handle missing/invalid PSC file with appropriate grace
  • Bugfix: remove player from feed
  • Bugfix: fix false negatives in error log; reenable logging-mails
  • Bugfix: fix timezone in logs


  • Bugfix: fix template autoinsert migration issue


  • Bugfix: fix call-time pass-by-reference
  • Bugfix: deactivate logging-mails until we find out w

Requires: 3.0 or higher
Compatible up to: 4.2.2
Last Updated: 2015-5-6
Active Installs: 1,000+


4.8 out of 5 stars


Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,1,1 0,1,0
100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 0,1,0 100,2,2 100,1,1
0,1,0 100,1,1
100,1,1 100,1,1
100,1,1 100,1,1