Podcast

podcast.title Title
podcast.subtitle Subtitle
podcast.summary Summary
podcast.imageUrl Image URL
podcast.image Image

see

image

podcast.authorName Author name
podcast.ownerName Owner name
podcast.ownerEmail Owner email
podcast.publisherName Publisher name
podcast.publisherUrl Publisher URL
podcast.landingPageUrl Podcast Home URL
podcast.episodes Episodes

Filter and order episodes with parameters:

  • post_id: one episode matching the given post id
  • post_ids: list of episodes matching the given list of post ids
  • category: list of episodes matching the category slug
  • slug: one episode matching the given slug
  • slugs: list of episodes matching the given list of slugs
  • 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.

Examples

Iterate over all published episodes, ordered by publication date.


{% for e in podcast.episodes %}
  {{ e.title }}
{% endfor %}

Order by title in ascending order.


{% for e in podcast.episodes({orderby: 'title', 'order': 'ASC'}) %}
  {{ e.title }}
{% endfor %}

Fetch one episode by slug.


{{ podcast.episodes({slug: 'pod001'}).title }}

see

episode

podcast.feeds Feeds

see

feed

podcast.license License

To render an HTML license, use {% include '@core/license.twig' with {'license': podcast.license} %}

see

license

podcast.setting Get a podcast setting.

Valid namespaces / names:


 website
    merge_episodes
    hide_wp_feed_discovery
    use_post_permastruct
    custom_episode_slug
    episode_archive
    episode_archive_slug
    url_template
    ssl_verify_peer
 metadata
    enable_episode_recording_date
    enable_episode_explicit
    enable_episode_license
 redirects
    podlove_setting_redirect
 tracking
    mode


podcast.contributors List of podcast contributors.

Examples

Iterating over a list of contributors


{% for contributor in podcast.contributors({scope: "podcast"}) %}
    {{ contributor.name }}
    {% if not loop.last %}, {% endif %}
{% endfor %}

Iterating over a grouped list of contributors


{% for contributorGroup in podcast.contributors({scope: "podcast", groupby: "group"}) %}
    <strong>{{ contributorGroup.group.title }}:</strong> 
    {% for contributor in contributorGroup.contributors %}
        {{ contributor.name }}
        {% if not loop.last %}, {% endif %}
    {% endfor %}
{% endfor %}

Parameters

  • id: Fetch one contributor by its id. Example:podcast.contributors({id: 'james'}).name
  • scope: Either “global”, “global-active” or “podcast”. - “global” returns all contributors. - “global-active” returns all contributors with at least one contribution in a published episode. - “podcast” returns the contributors configured in podcast settings. Default: “global-active”.
  • group: filter by group slug. Defaults to “all”, which does not filter.
  • role: filter by role slug. Defaults to “all”, which does not filter.
  • groupby: group or role slug. Group by “group” or “role”. If used, the returned data is has another layer for the groups. See examples for more details.
  • 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 contributors by parameter. Defaults to ‘name’.
    • ‘name’ - Order by public name.
podcast.seasons List of podcast seasons
podcast.services List of service profiles

Parameters:

  • category: (optional) “social”, “donation” or “all”. Default: “all”
  • type: (optional) Filter services by type. List of all service types: 500px, amazon wishlist, app.net, bandcamp, bitbucket, bitcoin, deviantart, diaspora, dogecoin, dribbble, facebook, flattr, flickr, generic wishlist, github, google+, instagram, jabber, last.fm, linkedin, litecoin, openstreetmap, paypal, miiverse, pinboard, pinterest, playstation network, skype, soundcloud, soup, steam, steam wishlist, thomann wishlist, twitch, tumblr, twitter, website, xbox live, xing, youtube

Example:


{% for service in podcast.services({category: "social"}) %}
  <a target="_blank" title="{{ service.title }}" href="{{ service.profileUrl }}">
    {{ service.image.html({width: 20}) }}
  </a>
{% endfor %}

podcast.subscribeButton Podcast Subscribe Button

Examples


{{ podcast.subscribeButton }}


{{ podcast.subscribeButton({format: 'square', color: '#000000', style: 'frameless', size: 'medium'}) }}

Parameters

  • format: Choose a button format, options are ‘rectangle’, ‘square’ and ‘cover’ (Note: ‘cover’ has a max size of 300px) Default: ‘cover’
  • style: Choose a button style, options are ‘filled’, ‘outline’ and ‘frameless’. Default: ‘filled’
  • size: Size and style of the button (‘small’, ‘medium’, ‘big’). All of the sizes can be combined with ‘auto’ to adapt the button width to the available space like this: ‘big auto’. Default: ‘big’
  • color: Define the color of the button. Allowed are all notations for colors that CSS can understand (keyword, rgb-hex, rgb, rgba, hsl, hsla). Please Note: It is not possible to style multiple buttons/popups on the same page differently.
  • language: ‘de’, ‘en’, ‘eo’, ‘fi’, ‘fr’, ‘nl’, ‘zh’ and ‘ja’. Defaults to podcast language setting. If you set the buttonid to “example123”, your element must have the class “podlove-subscribe-button-example123”.
  • hide: Set totrue if you want to hide the default button element. Useful if you provide your own button via thebuttonid setting.
  • buttonid: Use this if you want to trigger the button by clicking an element controlled by you.

Episode

episode.title Title
episode.subtitle Subtitle
episode.summary Summary
episode.slug Slug
episode.content Post content
episode.podcast Podcast
episode.player Web Player for the current episode

The player should not appear in feeds, so embed it like this:


{% if not is_feed() %}
  {{ episode.player }}
{% endif %}

You can set a custom context for tracking:


{{ episode.player({context: 'landing-page'}) }}

episode.publicationDate Post publication date

Uses WordPress datetime format by default or custom format:{{ episode.publicationDate.format('Y-m-d') }}

see

datetime

episode.recordingDate Post recording date

Uses WordPress datetime format by default or custom format:{{ episode.recordingDate.format('Y-m-d') }}

see

datetime

episode.explicit Explicit status

“yes”, “no” or “clean”

episode.url URL
episode.duration Duration Object

Useduration to display formatted hours, minutes and seconds. Alternatively, use the duration accessors for custom rendering.

see

duration

episode.post WordPress WP_Post object
episode.image Image
  • fallback:true orfalse. Should the podcast image be used if no episode image is available? Default:false

Example:


{{ episode.image({fallback: true}).url }}

see

image

episode.imageUrl Image URL
episode.imageUrlWithFallback Image URL with fallback
episode.meta Access a single meta value
episode.metas Access a list of meta values

Example:


<ul>
  {% for meta in episode.metas("mymetakey") %}
    <li>{{ meta }}</li>
  {% endfor %}
</ul>

{% for meta in episode.metas("mymetakey") %}
  {{ meta }}{% if not loop.last %}, {% endif %}
{% endfor %}

episode.tags Access a list of post tags.

See http://codex.wordpress.org/Function_Reference/wp_get_object_terms#Argument_Options for a list of available argument options.

Example:


  {% for tag in episode.tags({order: "ASC", orderby: "count"}) %}
    <a href="{{ tag.url }}">{{ tag.name }} ({{ tag.count }})</a>
  {% endfor %}

see

tag

episode.categories Access a list of episode categories.

See http://codex.wordpress.org/Function_Reference/wp_get_object_terms#Argument_Options for a list of available argument options.

Requires the “Categories” module.

Example:


  {% for category in episode.categories({order: "ASC", orderby: "count"}) %}
    <a href="{{ category.url }}">{{ category.name }} ({{ category.count }})</a>
  {% endfor %}

see

category

episode.files List of episode files

see

file

episode.chapters List of episode chapters

see

chapter

episode.license License

To render an HTML license, use{% include '@core/license.twig' %} for a license with fallback to the podcast license or {% include '@core/license.twig' with {'license': episode.license} %} for the episode license only.

see

license

episode.contributors List of episode contributors

Examples

Iterating over a list of contributors


{% for contributor in episode.contributors %}
    {{ contributor.name }}
    {% if not loop.last %}, {% endif %}
{% endfor %}

Iterating over a grouped list of contributors


{% for contributorGroup in episode.contributors({groupby: "group"}) %}
    <strong>{{ contributorGroup.group.title }}:</strong> 
    {% for contributor in contributorGroup.contributors %}
        {{ contributor.name }}
        {% if not loop.last %}, {% endif %}
    {% endfor %}
{% endfor %}

Parameters

  • id: Fetch one contributor by its id. Example:episode.contributors({id: 'james'}).name
  • group: group slug. If none is given, show all contributors.
  • role: role slug. If none is given, show all contributors.
  • groupby: group or role slug. Group by “group” or “role”. If used, the returned data is has another layer for the groups. See examples for more details.
  • order: Designates the ascending or descending order of the ‘orderby’ parameter. Defaults to ‘ASC’.
    • ‘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 contributors by parameter. Defaults to ‘position’.
    • ‘position’ - Order by the contributors position in the episode.
    • ‘comment’ - Order by the contributors comment in the episode.
episode.season Get season for an episode
episode.relatedEpisodes List of Related Episodes

Network

Requires the “Networks” module.

network.lists Network Lists

List network lists. Use theslug parameter to access a specific list.

Examples

Iterate over all lists.


{% for list in network.lists %}
    {{ list.title }}
{% endfor %}

Access a specific list by id.


{{ network.lists({id: "example"}).title }}

see

list

PodcastList

Requires the “Networks” module.

list.title List title
list.subtitle List subtitle
list.summary List summary
list.logo List logo
list.url List url
list.podcasts List podcasts
list.episodes List latest episodes from network
  • limit: Maximum number of episodes. Default: 10.
  • orderby: Order episodes by ‘post_date’, ‘post_title’, ‘ID’ or ‘comment_count’. Default: ‘post_date’.
  • order: Designates the ascending or descending order of the ‘orderby’ parameter. Default: ‘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).

Chapter

chapter.title Title
chapter.link Link
chapter.image Image
chapter.time Time

Feed

feed.title Title
feed.url URL
feed.discoverable Is the feed URL discoverable?
feed.passwordProtected Is the feed protected by a password?
feed.asset Asset

see

asset

Asset

asset.title Title
asset.downloadable Is the asset downloadable?
asset.fileType File type

see

file_type

File

file.id File id
file.episode Episode related to this file

see

episode

file.asset Asset related to this file

see

asset

file.size Size in bytes
file.url URL

The real file URL. For public facing URLs, use.publicUrl.

file.publicUrl Public URL

If tracking is active, this generates the tracking URL. Otherwise, it’s identical to.url.

  • source: download source for tracking, for example “webplayer”, “download” or “feed”
  • context: (optional) download context for tracking, for example “home”/”episode”/”archive” for player source or feed slug for feed source

Image

image.url Get URL for resized image.

Parameters

  • width: Image width. Set width and leave height blank to keep the orinal aspect ratio.
  • height: Image height. Set height and leave width blank to keep the orinal aspect ratio.
  • crop: true or false. Crop image if given dimensions deviate from original aspect ratio. Default: false.

Examples


{{ image.url }}               {# returns the unresized image URL #}
{{ image.url({width: 100}) }} {# returns resized image URL #}

Note: It is not guaranteed to get back the resized image. If it is not ready yet, the source URL will be returned.

image.html Get HTML image tag for resized image.

Parameters

  • width: Image width. Set width and leave height blank to keep the orinal aspect ratio.
  • height: Image height. Set height and leave width blank to keep the orinal aspect ratio.
  • crop: true or false. Crop image if given dimensions deviate from original aspect ratio. Default: false.
  • id: Set image tag “id” attribute.
  • class: Set image tag “class” attribute.
  • style: Set image tag “style” attribute.
  • alt: Set image tag “alt” attribute.
  • title: Set image tag “title” attribute.

Examples


{{ image.html }}                       {# returns the unresized image tag #}
{{ image.html({width: 100}) }}         {# returns resized image tag #}
{{ image.html({title: "The Spark"}) }} {# returns image tag with custom title #}

Note: It is not guaranteed to get back the resized image. If it is not ready yet, the source URL will be returned.

Tag

tag.id Term id
tag.name Term Name
tag.slug Term Slug
tag.description Term Description
tag.count Term Count
tag.url Term URL

Category

category.id Term id
category.name Term Name
category.slug Term Slug
category.description Term Description
category.count Term Count
category.url Term URL

Duration

duration.hours Hours

0,1,2,…

duration.minutes Minutes

0,1,2,…,59

duration.seconds Seconds

0,1,2,…,59

duration.milliseconds Milliseconds

0,1,2,…,999

duration.totalMilliseconds The total duration in milliseconds

0,1,2,…

FileType

file_type.name Name
file_type.type Type / group

One of those: audio, captions, chapters, ebook, image, metadata, video

file_type.mimeType Mimetype
file_type.extension Extension

Contributor

Requires the “Contributor” module.

contributor.visible Is the contributor public?
contributor.name Name

Public name of the contributor. If no public name is set, it defaults to the real name.

contributor.realname Real name

You should usecontributor.name as display name.

contributor.nickname Nickname
contributor.id ID
contributor.uri URI
contributor.publicname Public name

You should usecontributor.name as display name.

contributor.gender Gender

Either ‘female’, ‘male’, ‘none’ or null (not configured).

contributor.role Contribution role

A role is only available forepisode.contributors andpodcast.contributors, not if you access the globalcontributors directly.

contributor.group Contribution group

A group is only available forepisode.contributors andpodcast.contributors, not if you access the globalcontributors directly.

contributor.comment Contribution comment
contributor.avatar Avatar image

Dimensions default to 50x50px. Change it via parameter:contributor.avatar(32)

To render an HTML image tag:{% include '@contributors/avatar.twig' with {'avatar': contributor.avatar} only %} or{% include '@contributors/avatar.twig' with {'avatar': contributor.avatar, 'size': 150} only %}

contributor.contactemail Email address for internal use
contributor.flattr Flattr username
contributor.flattr_url Flattr URL.

When on a WordPress page, it returns the URL for the person. Otherwise a URL for that person in this specific episode is generated.

contributor.episodes Episodes with this contributor

Filter and order episodes with parameters:

  • 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.

see

episode

contributor.services List of service profiles

Parameters:

  • category: (optional) “social”, “donation” or “all”. Default: “all”
  • type: (optional) Filter services by type. List of all service types: 500px, about.me, amazon wishlist, app.net, auphonic credits, bandcamp, bitbucket, bitcoin, deviantart, diaspora, dogecoin, dribbble, email, facebook, flattr, flickr, foursquare, generic wishlist, github, gittip, google+, instagram, jabber, last.fm, linkedin, litecoin, openstreetmap, orcid, patreon, paypal, miiverse, pinboard, pinterest, playstation network, researchgate, scous, skype, soundcloud, soup, steam, steam wishlist, thomann wishlist, tumblr, twitch, twitter, vimeo, website, xbox live, xing, youtube

Example:


{% for service in contributor.services({category: "social"}) %}
  <a target="_blank" title="{{ service.title }}" href="{{ service.profileUrl }}">
    {{ service.image.html({width: 20}) }}
  </a>
{% endfor %}

ContributorGroup

Requires the “Contributor” module.

contributor_group.title Title
contributor_group.slug URL slug
contributor_group.contributors Contributors in this group.

Depending on context all contributors or just the contributors relevant to the current context.

see

contributor

Season

season.title Title
season.subtitle Subtitle
season.summary Summary
season.number Automatically assigned season number, starting at 1.
season.image Image
season.startDate Start Date

This is the configured start date, not the date of the first episode of the season. If you were looking for that, useseason.firstEpisode.publicationDate.

see

datetime

season.firstEpisode First episode of the season.

see

episode

season.lastEpisode Last episode of the season.

see

episode

season.running Is this season currently running?

{% if season.running %}
    This season is currently running.
{% endif %}

season.episodes Season Episodes

Service

Requires the “Social” module.

service.title Service title
service.description Service description
service.profileUrl Service profile URL
service.rawValue Service value

Normally, you want to access the generates url viaprofileUrl(). But in case you need the raw user value, use this method.

service.image Image

see

image

License

license.name Name
license.url URL
license.imageUrl Image URL
license.creativeCommons Is this a creative commons license?
license.valid Is the license valid? Is all required data available?

Flattr

Requires “Flattr” module.

flattr.button Flattr Button

Parameters

  • url: URL of thing to flattr. Defaults to WordPress permalink.
  • style: Button style.”large”, “compact” or “static”. Default: “compact”.
  • user: Flattr user id. Defaults to Flattr account in podcast settings.

Examples

Simple button with defaults


{{ flattr.button }}

Large button


{{ flattr.button({ style: 'large' }) }}

Button for the Podlove Publisher plugin


{{ flattr.button({ user: 'ericteubert', url: 'http://wordpress.org/extend/plugins/podlove-podcasting-plugin-for-wordpress/' }) }}

DateTime

datetime.year Year
datetime.month Month number
datetime.day Day of the month
datetime.hours Hours of the day, 24h format
datetime.minutes Minutes of the current hour
datetime.seconds Seconds of the current minute
datetime.format Custom time format

See PHP date documentation for available formats