=== Sermon Library ===
Contributors: seedcast
Tags: sermons, church, podcast, preaching, bible
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 2.2.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sermons, series, speakers, scripture, transcripts and an audio feed for your church website. Complete, free, and works with any theme.

== Description ==

Most sermon plugins publish a video and a title. A sermon is more than that.

Sermon Library gives every sermon a full record: the video, the audio, a written article, a Bible study, the transcript, and the sermon notes. Each one is a tab on the sermon page, each one is downloadable as a PDF, and all of it is indexable by search engines. Someone who cannot make it on Sunday, or who is quietly working out whether to visit at all, gets the whole message rather than a play button.

Everything described below is in the free plugin.

= See it in action =

A church running Sermon Library on a live site:

* [Sermon page](https://abidechico.org/sermon/spiritual-warfare-4-shoes-for-your-feet/) with video, transcript, article, Bible study and scripture panel
* [Sermon archive](https://abidechico.org/sermons/) built from shortcodes, with live filtering
* [Series listing](https://abidechico.org/series/)
* [Speaker profile](https://abidechico.org/speakers/matt-watkins/)

= Every sermon, fully documented =

* Video, audio, article, Bible study, transcript and sermon notes, each per sermon
* Every written format downloads as a formatted PDF your congregation can keep
* Tabbed sermon page that keeps inactive content in the markup, so search engines index all of it
* Series with cover art, descriptions and their own archive page
* Speaker profiles with bio, headshot, contact details, social links and a full sermon listing
* Topics for browsing by theme

= Scripture that is actually structured =

* Passage picker with book, chapter and verse, so references are consistent no matter who enters them
* Every passage links out to Bible.com or BibleGateway
* Filter the whole library by book of the Bible, which is how people who are studying a book actually search

= An audio feed you can submit anywhere =

* iTunes-compatible RSS, ready for Apple, Spotify and every other listening app
* Show settings for cover art, title, description, author, owner email, language and category
* Filtered feeds per series, speaker or topic, so a study series can stand as its own show
* Per sermon control over audio length, file size, episode art and whether it appears at all

= Built for the way churches actually run their sites =

* Works with any theme. Fonts and colours are inherited from your theme rather than overridden
* Tested with Elementor and Divi, which is what most church sites are built on
* Every template can be overridden from your theme folder
* Visual shortcode generator, so there is nothing to memorize
* Four appearance presets if you would rather not touch CSS

= Shortcodes =

* `[scsl_sermon_list]`: paginated sermon list with a full filter bar
* `[scsl_series_grid]`: grid or slider of series
* `[scsl_speaker_grid]`: grid or slider of speakers
* `[scsl_latest]`: the most recent sermon
* `[scsl_topic_list]`: grid of topic pills

= Found by search engines and AI assistants =

* JSON-LD structured data for VideoObject, AudioObject, Person and BreadcrumbList
* Meta description, Open Graph and Twitter Card tags, which step aside automatically if Yoast, Rank Math, AIOSEO or SEOPress is handling them
* Real URLs and working pagination on first load; filtering only switches to AJAX once someone uses it

= Moving from another plugin =

* Guided three step importer for Series Engine CSV exports
* Full JSON export of every sermon, series and speaker, for backup or for moving between sites

= Who this is for =

Churches and ministries that want their teaching to be findable, readable and shareable rather than locked inside a video player. It suits a church of forty as well as one of four thousand: there is nothing to configure before it works, and nothing you outgrow.

== Installation ==

1. Upload the `seedcast-sermon-library` folder to `/wp-content/plugins/`
2. Activate the plugin through the **Plugins** menu in WordPress
3. Permalinks are refreshed automatically on activation
4. Navigate to **Sermon Library** in the admin menu to begin adding content

== Frequently Asked Questions ==

= Can visitors download the sermon transcript? =

Yes. Transcripts, articles, Bible studies and sermon notes each get a PDF download button on the sermon page. Nothing extra is required.

= Can I submit the audio feed to Apple and Spotify, and can one series have its own? =

Yes to both. The RSS feed is iTunes compatible, and the show settings cover everything Apple checks for, including the owner email it uses to verify ownership and the artwork requirements. Your feed URL is on the Sermon Library settings screen.

For a single series, speaker or topic, append `?series=ID`, `?speaker=ID` or `?topic=slug` to that URL. The result is a feed containing only those sermons, which can be submitted separately.

= Can people search sermons by book of the Bible? =

Yes. Scripture is entered through a structured picker rather than a free text field, so the whole library can be filtered by book, and every passage links out to Bible.com or BibleGateway.

= Does it work with Elementor and Divi? =

Yes. All five shortcodes render inside page builders, and the styles load in the Elementor editor as well as on the front end.

= What permalink structure is required? =

Sermon Library requires a non-plain permalink structure. Go to Settings > Permalinks and choose "Post name" or any other option besides "Plain."

= Can I import from Series Engine? =

Yes. Go to Sermon Library > Import / Export, select "Series Engine (CSV)" from the source dropdown, and follow the three-step guided importer. You can map each Series Engine series to a new or existing Sermon Library series.

= Does this work with Elementor? =

Yes. Use the provided shortcodes inside Elementor's Shortcode widget. The plugin styles load automatically in both the Elementor editor and on the live frontend.

= Can I override the templates? =

Yes. Copy any template from `wp-content/plugins/seedcast-sermon-library/templates/` to `wp-content/themes/your-theme/seedcast-sermon-library/` and edit freely.

= What PHP version is required? =

PHP 7.4 or higher. PHP 8.0+ recommended.

= Does this affect my existing content? =

No. Sermon Library uses its own custom post types (`scsl_sermon`, `scsl_series`, `scsl_speaker`) and taxonomies (`scsl_topic`, `scsl_scripture`). It does not modify any existing posts, pages, or taxonomies.

= What happens if I deactivate the plugin? =

Your sermon data is preserved in the database. Deactivating removes the custom URLs and admin menu but does not delete any content.

= Does the PDF download feature require anything extra? =

The PDF download falls back to a print-ready HTML page by default. For proper PDF generation, install mPDF via Composer: `composer require mpdf/mpdf` in the plugin directory.

= Are there external service calls? =

Scripture links point to Bible.com (YouVersion) or BibleGateway, and only when a visitor clicks a passage link. No data is sent automatically.

= Does it work with Yoast SEO or RankMath? =

Yes. The plugin automatically configures Yoast and RankMath to use sermon content fields for meta descriptions. If neither is installed, the plugin outputs its own meta tags.

== Screenshots ==

1. Sermon edit screen with tabbed content fields and scripture picker
2. Single sermon page with video, scripture panel, and action buttons
3. Sermon list with AJAX filter bar
4. Series archive page with grid and pagination
5. Speaker profile page
6. Sermon Library Settings with theme picker
7. Shortcode Generator, a visual builder
8. Import / Export page

== Changelog ==

= 2.2.0 =

**Audio feed**

* Added show level settings for the audio feed: cover art, title, description, author, owner email, language, category, show website, and an explicit flag. They live on the Sermon Library settings screen.
* Fixed: the feed hardcoded its language, category and explicit flag, and carried no owner email at all. Apple requires one to verify ownership, so the feed could not be submitted before this.
* Every field falls back to your site title, tagline, admin email and site icon, so a feed you never touch is still valid.
* Cover art is stored as a media library reference rather than a URL, so the full size image is used in the feed. Apple rejects artwork below 1400x1400.

**Settings**

* Settings moved to Settings > Seedcast, in one permanent place alongside any other Seedcast plugin you run. The Settings link under the Sermon Library menu goes straight there.
* Theme choice is now shared across Seedcast plugins, so they match without configuring each one. Your existing choice is carried over on update.
* The feed URL and episode title options moved in alongside the new show settings, where they belong.
* The Import Content box on the sermon editor moved to the sidebar, under Publish.
* Removed the Date Range and Topics columns from the Series list. Neither is an attribute of a series and both were always empty.

**Appearance**

* Front end output now inherits fonts and text colours from your theme instead of setting its own. Sermon pages, series pages and the shortcodes will look more like the rest of your site.
* Shared components (buttons, lists, filters, pagination, breadcrumbs, the audio player, video embeds) now come from a shared library rather than being duplicated, so they behave consistently.
* Removed the underline and fixed heading sizes that were being applied to section titles.
* Fixed: series artwork was forced into a square container, leaving dead space beneath landscape images.
* Fixed: the share divider on a sermon page drew even when there were no platform links above it.
* The X share button is now labelled "Share on X".

**Fixes**

* Fixed: speaker pages referenced a variable that was never defined, producing a PHP warning on every view.
* Fixed: speaker pages ran one database query per sermon to build the series list, then one per series after that. Both are now a single query, which makes a large difference for speakers with a long history.
* Fixed: PDF download button labels were escaped twice.
* Fixed: share and Bible passage links used urlencode(), which encodes spaces as plus signs. Now rawurlencode().
* Fixed: the plugin declared PHP 7.4 as its minimum but used a PHP 8.0 function. Verified clean against 7.4.
* Fixed: the breadcrumb shown on the page and the breadcrumb sent to search engines were built separately and could disagree. Both now come from one source.
* Video embeds use YouTube's privacy mode and Vimeo's do-not-track flag everywhere, not just in some places.

**Accessibility**

* Settings sections are now real tabs with proper roles and keyboard support.
* The copy link button announces itself to screen readers instead of only changing its label.
* The theme picker shows a visible focus indicator for keyboard users.

= 1.7.0 =
* Changed: Custom post type slugs renamed from sl_ to scsl_ prefix for uniqueness
* Added: Automatic database migration runs on activation and update
* Added: JSON round-trip importer for migrating between sites
* Added: Sermon archive template at /sermon/
* Fixed: Scripture panel variable scope
* Fixed: Series hero image aspect ratio

= 1.5.0 =
* Added: Speaker grid shortcode [scsl_speaker_grid] with slider support
* Added: Speaker archive page at /speakers/
* Added: Separate headshot field for episode card thumbnail vs featured image for profile/card
* Added: Drag-to-reorder speakers in admin (same as series)
* Added: Automatic Yoast SEO / RankMath / AIOSEO configuration on first activation
* Added: Meta description, Open Graph, and Twitter Card tags when no SEO plugin installed
* Added: Export to JSON (Import / Export page)
* Added: Series Grid slider mode (slider="true" attribute)
* Added: Series per page setting
* Added: Automatic permalink flush on plugin update, so no manual Permalinks save is needed
* Improved: Mobile layout across all shortcodes and templates
* Improved: Elementor editor CSS loading for all shortcodes
* Fixed: Series card click navigation
* Fixed: Stale JS cache causing click issues
* Removed: AI Integration settings (reserved for Pro)
* Removed: Raw transcript field (reserved for Pro)

= 1.4.0 =
* Added: Warm theme
* Added: Series Engine CSV importer with flexible series mapping
* Added: Scripture passage picker (Book, Chapter, Verse)
* Added: External platform links per sermon (Spotify, Apple Podcasts, YouTube, etc.)
* Added: Social share buttons (Facebook, X, LinkedIn, Copy Link)
* Added: Shortcode Generator admin page
* Added: SEO-friendly pagination
* Added: Drag-to-reorder series
* Added: Admin filters for sermon list (Series, Speaker, Topic)
* Added: Topics manager page
* Added: Podcast RSS feed

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 2.2.0 =
Front end output now inherits fonts and colours from your theme rather than setting its own, so pages will look closer to the rest of your site. Settings have moved to Settings > Seedcast. Your theme choice and all sermon content carry over automatically.

= 1.5.0 =
Permalinks are now refreshed automatically on update. Speaker URLs have changed from /speaker/ to /speakers/.
