Repository navigation
v1.7.0
Highlights
A feature release headlined by full-site migration, a rebuilt Speaker/Series/Service Type save path that fixes a family of assignment bugs, and podcast artwork that finally meets Apple's requirements.
📦 Full-Site Import/Export
Move an entire sermon library between sites in one step, under Tools → Import/Export → Full Migration:
- Exports sermons (with variations, timestamps, transcripts and downloads), series, speakers, service types, templates, taxonomy terms, and optionally your plugin settings.
- Imports run in small, resumable batches, so libraries with tens of thousands of sermons don't hit a PHP timeout.
- Re-importing the same file updates existing content instead of duplicating it.
- WP-CLI:
wp cpl export/wp cpl importwith--dry-run,--download-media,--include-settings,--match-by-slugand--batch-size— recommended for very large libraries.
🔧 Speaker / Series / Service Type assignments
The save path behind these fields has been rebuilt and hardened:
- Assigning a Series or Speaker saves reliably even when the stored value already matches — sermons copied with a duplicator plugin can now be assigned the same Series/Speaker as the original.
- Clearing the field actually removes the assignment.
- A one-time cleanup runs on upgrade: orphaned associations are removed (the stray comma in speaker lists) and duplicated ones are collapsed (sermons double-listed in feeds and archives).
- Re-saving a sermon with duplicate rows removes only the surplus row, never the one being kept.
- When Service Types drive variations, saving the parent sermon no longer overwrites the service type that identifies each variation.
- A save that doesn't include these fields (e.g. programmatic saves from custom code) no longer clears them.
- WP All Import: a blank or unmatched Speaker/Series column no longer clears existing assignments — re-running a feed to refresh other fields leaves them intact. Comma-separated names in one column are matched individually.
- Permanently deleting a Series now removes it from every sermon it contained.
🎙️ Podcast & Sync
- Series, Speaker, and Service Type podcast feeds serve the full-size featured image for channel art (previously 600×600, below Apple Podcasts' 1400×1400 minimum, which got artwork rejected).
- Sermon sync can set a sermon's service type and supply artwork for series and service types — an image chosen by hand is never overwritten.
- Sermons with emoji in the title no longer fail to save on sites whose tables predate 4-byte character support.
▶️ Player
- Listen starts playback on the first click, including Safari and iOS.
- Video plays in the sermon's feature area again after audio has been played, instead of being pushed into the persistent player.
- Embed audio (SoundCloud, Spotify, etc.) renders in the feature area again.
🧪 For developers
- New PHPUnit harness: a WordPress-free unit suite (Brain Monkey) plus a WordPress integration suite.
vendor/has left version control — runcomposer installafter pulling.
Upgrade Notice
A one-time cleanup runs automatically on upgrade to remove orphaned and duplicate Speaker/Series/Service Type associations. If you use WP All Import, note the behavior change: a blank or unmatched Speaker/Series column no longer clears existing assignments.
Full Changelog: 1.6.2...1.7.0