wp-content/themes/cassette/
Cassette
A podcast theme where the episode player is native audio and the transcript is a first-class page.
== Description ==
The player in most podcast themes is an iframe from a hosting company. Cassette styles the native audio element, so it works offline, respects the operating system’s media controls, appears on the lock screen, and does not disappear when the host changes their embed code.
Transcripts are content, not an attachment: a real section of the episode page, indexed by search, linkable at any paragraph, and readable by anyone who would rather read than listen. Chapter markers are anchors in the transcript, which is the only place they were ever useful.
Episode archives carry duration, episode number and season as post meta, and the feed is generated from the same fields — so what a directory sees and what a reader sees cannot drift apart.
== Screenshots ==
Numbered the way they ship in /assets/. Click any one to see it full width.
== Installation ==
- Install and activate the theme.
- Create an episode, attach or link the audio file, and fill in the episode fields.
- Paste the transcript into the Transcript block. Timestamps become anchors automatically.
The feed is generated by the theme. Point your directories at /feed/podcast/.
== Frequently asked questions ==
Can I keep hosting audio elsewhere?
Yes. Paste the URL; the theme does not care where the file lives, only that it is reachable.
Does it support seasons?
Seasons are a taxonomy, so archives, feeds and navigation all understand them.
What about video episodes?
The same layout with a video element. Transcripts work identically.
== Changelog ==
= 3.1.0 =
- Timestamps in the Transcript block become anchors, and the player seeks to them.
- Media Session API metadata, so lock-screen controls show the episode rather than the site name.
= 3.0.0 =
- Replaced the iframe player with a styled native audio element. Existing embeds keep working but are no longer generated.
- Minimum WordPress is now 6.4.
= 2.4.0 =
- Transcripts became content instead of an uploaded file.