From 29e5b7884d140a1d0aeaa420360292633de1fa2b Mon Sep 17 00:00:00 2001 From: barneyjeffries Date: Tue, 12 Dec 2023 15:56:19 +0000 Subject: [PATCH 01/25] added variation and custom query --- assets/js/blocks.js | 38 ++++++++++++++++++++++++++++- includes/blocks.php | 59 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/assets/js/blocks.js b/assets/js/blocks.js index c6aafe8a..363d4e27 100755 --- a/assets/js/blocks.js +++ b/assets/js/blocks.js @@ -2,7 +2,7 @@ * Internal block libraries */ import { __ } from '@wordpress/i18n'; -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, registerBlockVariation } from '@wordpress/blocks'; // Split the Edit component out. import Edit from './edit'; @@ -105,3 +105,39 @@ export default registerBlockType( }, }, ); + +const VARIATION_NAME = 'podcasting/latest-episode'; + +registerBlockVariation('core/query', { + name: VARIATION_NAME, + title: 'Latest Podcast Episode', + description: 'Displays the latest podcast episode.', + isActive: ['simple-podcasting'], + icon: 'microphone', + attributes: { + namespace: VARIATION_NAME, + query: { + postType: 'post', + podcastingQuery: 'not_empty', + }, + }, + allowedControls: [ ], + scope: [ 'inserter' ], + innerBlocks: [ + [ + 'core/post-template', + {}, + [ [ + 'core/group', + { className: 'podcasting-latest-episode' }, + [ + [ 'core/post-featured-image' ], + [ 'core/group', { className: 'podcasting-latest-episode__content' }, [ + [ 'core/post-title' ], [ 'core/post-date' ], [ 'core/post-excerpt' ] + ] ], + ] + ] ], + ], + [ 'core/query-no-results' ], + ], +}); diff --git a/includes/blocks.php b/includes/blocks.php index 0095cb33..7d990888 100644 --- a/includes/blocks.php +++ b/includes/blocks.php @@ -360,3 +360,62 @@ function( $platform ) { wp_send_json_success( $result ); } add_action( 'wp_ajax_get_podcast_platforms', __NAMESPACE__ . '\ajax_get_podcast_platforms' ); + +/** + * Latest podcast query for front-end. + */ +function latest_episode_query_loop($query) { + + // update query to only return posts that have a podcast selected + return [ + 'post_type' => 'post', + 'posts_per_page' => 1, + 'orderby' => 'date', + 'order' => 'DESC', + 'tax_query' => [ + [ + 'taxonomy' => 'podcasting_podcasts', + 'field' => 'term_id', + 'operator' => 'EXISTS' + ] + ], + ]; +} + +/** + * Latest podcast check. + */ +function latest_episode_check( $pre_render, $parsed_block, $parent_block ) { + + if ( isset( $parsed_block[ 'attrs' ][ 'namespace' ] ) && 'podcasting/latest-episode' === $parsed_block[ 'attrs' ][ 'namespace' ] ) { + add_action( 'query_loop_block_query_vars', __NAMESPACE__ . '\latest_episode_query_loop' ); + } +} +add_filter( 'pre_render_block', __NAMESPACE__ . '\latest_episode_check', 10, 3 ); + +/** + * Latest podcast query in editor. + */ +function latest_episode_query_api( $args, $request ) { + + $podcasting_podcasts = $request->get_param( 'podcastingQuery' ); + + if ( 'not_empty' === $podcasting_podcasts ) { + $args = [ + 'post_type' => 'post', + 'posts_per_page' => 1, + 'orderby' => 'date', + 'order' => 'DESC', + 'tax_query' => [ + [ + 'taxonomy' => 'podcasting_podcasts', + 'field' => 'term_id', + 'operator' => 'EXISTS' + ] + ], + ]; + } + + return $args; +} +add_filter( 'rest_post_query', __NAMESPACE__ . '\latest_episode_query_api', 10, 2); From 9c9f33c7fa165d262de009f7830477465758d1c4 Mon Sep 17 00:00:00 2001 From: barneyjeffries Date: Thu, 14 Dec 2023 16:12:24 +0000 Subject: [PATCH 02/25] added block styling for latest episode --- assets/js/blocks/latest-episode/index.js | 1 + assets/js/blocks/latest-episode/index.scss | 51 ++++++++++++++++++++++ simple-podcasting.php | 45 +++++++++++++++++++ webpack.config.js | 5 +++ 4 files changed, 102 insertions(+) create mode 100644 assets/js/blocks/latest-episode/index.js create mode 100644 assets/js/blocks/latest-episode/index.scss diff --git a/assets/js/blocks/latest-episode/index.js b/assets/js/blocks/latest-episode/index.js new file mode 100644 index 00000000..67aac616 --- /dev/null +++ b/assets/js/blocks/latest-episode/index.js @@ -0,0 +1 @@ +import './index.scss'; diff --git a/assets/js/blocks/latest-episode/index.scss b/assets/js/blocks/latest-episode/index.scss new file mode 100644 index 00000000..69e4cf84 --- /dev/null +++ b/assets/js/blocks/latest-episode/index.scss @@ -0,0 +1,51 @@ +.podcasting-latest-episode { + display: flex; + flex-direction: column; + justify-content: end; + min-height: 20rem; + overflow: hidden; + position: relative; + + & .wp-block-post-featured-image { + height: 100%; + object-fit: fill; + object-position: center; + position: absolute; + width: 100%; + + &::after { + background-color: rgb(0 0 0 / 75%); + content: ""; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + } +} + +.podcasting-latest-episode__content { + color: #fff; + padding: 3rem; + position: relative; + z-index: 1; + + @media (min-width: 768px) { + padding: 3rem; + } + + & .wp-block-post-excerpt, + & .wp-block-post-excerpt__more-text { + margin-top: 0.25rem; + } + + & .wp-block-post-excerpt__more-link { + color: #fff; + } +} + +.editor-styles-wrapper .wp-block-post-content .podcasting-latest-episode__content .wp-block-post-excerpt__more-link:where(:not(.wp-element-button)) { + color: #fff; +} diff --git a/simple-podcasting.php b/simple-podcasting.php index 1dc4fdfb..0446ab13 100644 --- a/simple-podcasting.php +++ b/simple-podcasting.php @@ -250,3 +250,48 @@ function setup_edit_screen() { } } add_action( 'admin_init', __NAMESPACE__ . '\setup_edit_screen' ); + +/** + * Registers block assets for Latest Episode. + */ +function register_latest_episode_assets() { + if ( ! file_exists( PODCASTING_PATH . 'dist/latest-episode.asset.php' ) ) { + return; + } + + $block_asset = require PODCASTING_PATH . 'dist/latest-episode.asset.php'; + + wp_register_style( + 'latest-episode-block', + PODCASTING_URL . 'dist/latest-episode.css', + array(), + $block_asset['version'], + 'all' + ); + + wp_enqueue_style( 'latest-episode-block' ); +} +add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\register_latest_episode_assets' ); + +/** + * Registers block assets for Latest Episode in admin. + * + */ +function register_latest_episode_assets_admin() { + if ( ! file_exists( PODCASTING_PATH . 'dist/latest-episode.asset.php' ) ) { + return; + } + + $block_asset = require PODCASTING_PATH . 'dist/latest-episode.asset.php'; + + wp_register_style( + 'latest-episode-block', + PODCASTING_URL . 'dist/latest-episode.css', + array(), + $block_asset['version'], + 'all' + ); + + wp_enqueue_style( 'latest-episode-block' ); +} +add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\register_latest_episode_assets_admin' ); diff --git a/webpack.config.js b/webpack.config.js index 0acab423..064dfc15 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -40,6 +40,11 @@ module.exports = { 'assets/js', 'create-podcast-show.js' ), + 'latest-episode': path.resolve( + process.cwd(), + 'assets/js/blocks/latest-episode', + 'index.js' + ), }, plugins: [ ...defaultConfig.plugins, From 4c7eb8da4d017332ab95e7400b187f315870de92 Mon Sep 17 00:00:00 2001 From: barneyjeffries Date: Wed, 10 Jan 2024 16:21:39 +0000 Subject: [PATCH 03/25] fix lint issues --- includes/blocks.php | 49 +++++++++++++++++++++++++------------------ simple-podcasting.php | 13 ++++++------ 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/includes/blocks.php b/includes/blocks.php index 7d990888..a841b5a9 100644 --- a/includes/blocks.php +++ b/includes/blocks.php @@ -363,31 +363,37 @@ function( $platform ) { /** * Latest podcast query for front-end. + * + * @param Object $query query object. */ -function latest_episode_query_loop($query) { - +function latest_episode_query_loop( $query ) { + // update query to only return posts that have a podcast selected return [ - 'post_type' => 'post', + 'post_type' => 'post', 'posts_per_page' => 1, - 'orderby' => 'date', - 'order' => 'DESC', - 'tax_query' => [ + 'orderby' => 'date', + 'order' => 'DESC', + 'tax_query' => [ [ 'taxonomy' => 'podcasting_podcasts', 'field' => 'term_id', - 'operator' => 'EXISTS' - ] + 'operator' => 'EXISTS', + ], ], ]; } /** * Latest podcast check. + * + * @param String $pre_render pre render object. + * @param Array $parsed_block parsed block object. + * @param WP_Block $parent_block parent block object. */ function latest_episode_check( $pre_render, $parsed_block, $parent_block ) { - - if ( isset( $parsed_block[ 'attrs' ][ 'namespace' ] ) && 'podcasting/latest-episode' === $parsed_block[ 'attrs' ][ 'namespace' ] ) { + + if ( isset( $parsed_block['attrs']['namespace'] ) && 'podcasting/latest-episode' === $parsed_block['attrs']['namespace'] ) { add_action( 'query_loop_block_query_vars', __NAMESPACE__ . '\latest_episode_query_loop' ); } } @@ -395,27 +401,30 @@ function latest_episode_check( $pre_render, $parsed_block, $parent_block ) { /** * Latest podcast query in editor. + * + * @param Array $args query args. + * @param Array $request request object. */ function latest_episode_query_api( $args, $request ) { - + $podcasting_podcasts = $request->get_param( 'podcastingQuery' ); - + if ( 'not_empty' === $podcasting_podcasts ) { $args = [ - 'post_type' => 'post', + 'post_type' => 'post', 'posts_per_page' => 1, - 'orderby' => 'date', - 'order' => 'DESC', - 'tax_query' => [ + 'orderby' => 'date', + 'order' => 'DESC', + 'tax_query' => [ [ 'taxonomy' => 'podcasting_podcasts', 'field' => 'term_id', - 'operator' => 'EXISTS' - ] + 'operator' => 'EXISTS', + ], ], ]; } - + return $args; } -add_filter( 'rest_post_query', __NAMESPACE__ . '\latest_episode_query_api', 10, 2); +add_filter( 'rest_post_query', __NAMESPACE__ . '\latest_episode_query_api', 10, 2 ); diff --git a/simple-podcasting.php b/simple-podcasting.php index 0446ab13..94fd9424 100644 --- a/simple-podcasting.php +++ b/simple-podcasting.php @@ -258,9 +258,9 @@ function register_latest_episode_assets() { if ( ! file_exists( PODCASTING_PATH . 'dist/latest-episode.asset.php' ) ) { return; } - + $block_asset = require PODCASTING_PATH . 'dist/latest-episode.asset.php'; - + wp_register_style( 'latest-episode-block', PODCASTING_URL . 'dist/latest-episode.css', @@ -268,22 +268,21 @@ function register_latest_episode_assets() { $block_asset['version'], 'all' ); - + wp_enqueue_style( 'latest-episode-block' ); } add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\register_latest_episode_assets' ); /** * Registers block assets for Latest Episode in admin. - * */ function register_latest_episode_assets_admin() { if ( ! file_exists( PODCASTING_PATH . 'dist/latest-episode.asset.php' ) ) { return; } - + $block_asset = require PODCASTING_PATH . 'dist/latest-episode.asset.php'; - + wp_register_style( 'latest-episode-block', PODCASTING_URL . 'dist/latest-episode.css', @@ -291,7 +290,7 @@ function register_latest_episode_assets_admin() { $block_asset['version'], 'all' ); - + wp_enqueue_style( 'latest-episode-block' ); } add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\register_latest_episode_assets_admin' ); From 91de5558ca9fb674a68f672527c1130aa8bbd9c8 Mon Sep 17 00:00:00 2001 From: Darin Kotter Date: Tue, 16 Jan 2024 13:22:30 -0700 Subject: [PATCH 04/25] Update CREDITS.md --- CREDITS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index 801cdb70..c2548e8c 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -10,7 +10,7 @@ The following individuals are responsible for curating the list of issues, respo Thank you to all the people who have already contributed to this repository via bug reports, code, design, ideas, project management, translation, testing, etc. -[Adam Silverstein (@adamsilverstein)](https://github.com/adamsilverstein), [Helen Hou-Sandi (@helen)](https://github.com/helen), [Ryan Welcher (@ryanwelcher)](https://github.com/ryanwelcher), [David Chandra Purnama (@turtlepod)](https://github.com/turtlepod), [Oscar Sanchez S. (@oscarssanchez)](https://github.com/oscarssanchez), [Jon Christensen (@Firestorm980)](https://github.com/Firestorm980), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Noah Halstead (@nhalstead)](https://github.com/nhalstead), [Matthew Haines-Young (@mattheu)](https://github.com/mattheu), [Tung Du (@dinhtungdu)](https://github.com/dinhtungdu), [David Chabbi](https://www.linkedin.com/in/david-chabbi-985719b4/), [Pablo Amato (@pabamato)](https://github.com/pabamato), [(@monomo111)](https://github.com/monomo111), [Jake Goldman (@jakemgold)](https://github.com/jakemgold), [Mark Jaquith (@markjaquith)](https://github.com/markjaquith), [Riad Benguella (@youknowriad)](https://github.com/youknowriad), [Mészáros Róbert (@meszarosrob)](https://github.com/meszarosrob), [Max Lyuchin (@cadic)](https://github.com/cadic), [Dharmesh Patel (@iamdharmesh)](https://github.com/iamdharmesh), [Darin Kotter (@dkotter)](https://github.com/dkotter), [Peter Wilson (@peterwilsoncc)](https://github.com/peterwilsoncc), [Felipe Elia (@felipeelia)](https://github.com/felipeelia), [Mehidi Hassan (@mehidi258)](https://github.com/mehidi258), [Tom J Nowell (@tomjn)](https://github.com/tomjn), [David Towoju (@davexpression)](https://github.com/davexpression), [Quamruz Zaman (@zamanq)](https://github.com/zamanq), [Debashish (@dchucks)](https://github.com/dchucks), [(@supersmo)](https://github.com/supersmo), [Jayedul Kabir (@jayedul)](https://github.com/jayedul), [Faisal Alvi (@faisal-alvi)](https://github.com/faisal-alvi), [Vikram Mopharty (@vikrampm1)](https://github.com/vikrampm1), [Siddharth Thevaril (@Sidsector9)](https://github.com/Sidsector9), [Nicolas Knight (@Nicolas-knight)](https://github.com/Nicolas-knight), [Jonathan Netek (@jnetek)](https://github.com/jnetek), [Mehul Gohil (@mehul0810)](https://github.com/mehul0810), [Nate Conley (@nateconley)](https://github.com/nateconley), [Ajay Maurya (@ajmaurya99)](https://github.com/ajmaurya99), [Nickolas Kola (@nickolas-kola)](https://github.com/nickolas-kola), [Ahamed Arshad Azmi (@achchu93)](https://github.com/achchu93), [Ivan Ivanić (@Spoygg)](https://github.com/Spoygg), [Garth Gutenberg (@ggutenberg)](https://github.com/ggutenberg), [Ravinder Kumar (@ravinderk)](https://github.com/ravinderk), [Konstantinos Galanakis (@kmgalanakis)](https://github.com/kmgalanakis), [Dependabot (@dependabot)](https://github.com/apps/dependabot), [Sumit Bagthariya (@qasumitbagthariya)](https://github.com/qasumitbagthariya). +[Adam Silverstein (@adamsilverstein)](https://github.com/adamsilverstein), [Helen Hou-Sandi (@helen)](https://github.com/helen), [Ryan Welcher (@ryanwelcher)](https://github.com/ryanwelcher), [David Chandra Purnama (@turtlepod)](https://github.com/turtlepod), [Oscar Sanchez S. (@oscarssanchez)](https://github.com/oscarssanchez), [Jon Christensen (@Firestorm980)](https://github.com/Firestorm980), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Noah Halstead (@nhalstead)](https://github.com/nhalstead), [Matthew Haines-Young (@mattheu)](https://github.com/mattheu), [Tung Du (@dinhtungdu)](https://github.com/dinhtungdu), [David Chabbi](https://www.linkedin.com/in/david-chabbi-985719b4/), [Pablo Amato (@pabamato)](https://github.com/pabamato), [(@monomo111)](https://github.com/monomo111), [Jake Goldman (@jakemgold)](https://github.com/jakemgold), [Mark Jaquith (@markjaquith)](https://github.com/markjaquith), [Riad Benguella (@youknowriad)](https://github.com/youknowriad), [Mészáros Róbert (@meszarosrob)](https://github.com/meszarosrob), [Max Lyuchin (@cadic)](https://github.com/cadic), [Dharmesh Patel (@iamdharmesh)](https://github.com/iamdharmesh), [Darin Kotter (@dkotter)](https://github.com/dkotter), [Peter Wilson (@peterwilsoncc)](https://github.com/peterwilsoncc), [Felipe Elia (@felipeelia)](https://github.com/felipeelia), [Mehidi Hassan (@mehidi258)](https://github.com/mehidi258), [Tom J Nowell (@tomjn)](https://github.com/tomjn), [David Towoju (@davexpression)](https://github.com/davexpression), [Quamruz Zaman (@zamanq)](https://github.com/zamanq), [Debashish (@dchucks)](https://github.com/dchucks), [(@supersmo)](https://github.com/supersmo), [Jayedul Kabir (@jayedul)](https://github.com/jayedul), [Faisal Alvi (@faisal-alvi)](https://github.com/faisal-alvi), [Vikram Mopharty (@vikrampm1)](https://github.com/vikrampm1), [Siddharth Thevaril (@Sidsector9)](https://github.com/Sidsector9), [Nicolas Knight (@Nicolas-knight)](https://github.com/Nicolas-knight), [Jonathan Netek (@jnetek)](https://github.com/jnetek), [Mehul Gohil (@mehul0810)](https://github.com/mehul0810), [Nate Conley (@nateconley)](https://github.com/nateconley), [Ajay Maurya (@ajmaurya99)](https://github.com/ajmaurya99), [Nickolas Kola (@nickolas-kola)](https://github.com/nickolas-kola), [Ahamed Arshad Azmi (@achchu93)](https://github.com/achchu93), [Ivan Ivanić (@Spoygg)](https://github.com/Spoygg), [Garth Gutenberg (@ggutenberg)](https://github.com/ggutenberg), [Ravinder Kumar (@ravinderk)](https://github.com/ravinderk), [Konstantinos Galanakis (@kmgalanakis)](https://github.com/kmgalanakis), [Dependabot (@dependabot)](https://github.com/apps/dependabot), [Sumit Bagthariya (@qasumitbagthariya)](https://github.com/qasumitbagthariya), [Shazahan Kabir Saju (@sksaju)](https://github.com/sksaju), [Kirtan Gajjar (@kirtangajjar)](https://github.com/kirtangajjar), [Chetra Chann (@channchetra)](https://github.com/channchetra). ## Libraries From 53f78cf76b5712b6765357907ae89c247ce8a948 Mon Sep 17 00:00:00 2001 From: Zaman Date: Sat, 27 Jan 2024 01:17:37 +0600 Subject: [PATCH 05/25] Added episode cover art option --- assets/js/blocks.js | 7 +++++- assets/js/edit.js | 32 +++++++++++++++++++++++++++ assets/js/podcasting-edit-post.js | 36 +++++++++++++++++++++++++++++++ includes/customize-feed.php | 5 +++++ includes/datatypes.php | 10 +++++++++ includes/post-meta-box.php | 8 +++++++ 6 files changed, 97 insertions(+), 1 deletion(-) diff --git a/assets/js/blocks.js b/assets/js/blocks.js index 363d4e27..b88a417e 100755 --- a/assets/js/blocks.js +++ b/assets/js/blocks.js @@ -88,7 +88,12 @@ export default registerBlockType( type: 'string', source: 'meta', meta: 'podcast_episode_type', - } + }, + episodeCover: { + type: 'string', + source: 'meta', + meta: 'podcast_episode_cover', + }, }, transforms, diff --git a/assets/js/edit.js b/assets/js/edit.js index 4af4a64b..644cf064 100644 --- a/assets/js/edit.js +++ b/assets/js/edit.js @@ -5,12 +5,14 @@ const { InspectorControls, MediaPlaceholder, MediaReplaceFlow, + MediaUpload, RichText, } = wp.blockEditor; const { FormToggle, PanelBody, PanelRow, + PanelHeader, SelectControl, TextControl, RadioControl, @@ -57,6 +59,7 @@ class Edit extends Component { const seasonNumber = attributes.seasonNumber || ''; const episodeNumber = attributes.episodeNumber || ''; const episodeType = attributes.episodeType || ''; + const episodeCover = attributes.episodeCover || ''; const { className, src } = this.state; const onSelectAttachment = (attachment) => { @@ -273,6 +276,35 @@ class Edit extends Component { {__('Add Transcript', 'simple-podcasting')} + + { + setAttributes({ + episodeCover: media.url + }) + }} + multiple={false} + allowedTypes={['image/gif']} + value={episodeCover} + render={({ open }) => ( + + )} + /> + {episodeCover && ( + + )} + + {episodeCover && ( + + Episode cover image + + )}
diff --git a/assets/js/podcasting-edit-post.js b/assets/js/podcasting-edit-post.js index c51c4a9e..e3028ce8 100644 --- a/assets/js/podcasting-edit-post.js +++ b/assets/js/podcasting-edit-post.js @@ -34,4 +34,40 @@ jQuery( document ).ready( function( $ ) { mediaUploader.open(); } ); + + // Handle Episode Cover Image + $( '#podcasting-episode-cover-button' ).click( function( e ) { + e.preventDefault(); + + var $this = $( this ), + $input = $( 'input#podcasting-episode-cover' ), + mediaUploader; + + // If the uploader object has already been created, reopen the dialog. + if ( mediaUploader ) { + mediaUploader.open(); + return; + } + + // eslint-disable-next-line camelcase + mediaUploader = wp.media.frames.file_frame = wp.media( { + title: $this.data( 'modalTitle' ), + button: { + text: $this.data( 'modalButton' ) + }, + library: { + type: 'image/gif' + }, + multiple: false + }); + + mediaUploader.off( 'select' ); + mediaUploader.on( 'select', function() { + var attachment = mediaUploader.state().get('selection').first(); + + $input.val( attachment.get('url') ); + }); + + mediaUploader.open(); + } ); } ); diff --git a/includes/customize-feed.php b/includes/customize-feed.php index d0b0a7a6..6b4c86ba 100644 --- a/includes/customize-feed.php +++ b/includes/customize-feed.php @@ -215,6 +215,11 @@ function feed_item() { if ( ! empty( $feed_item['image'] ) && is_array( $feed_item['image'] ) ) { $feed_item['image'] = $feed_item['image'][0]; } + } else { + $episode_cover = get_post_meta( $post->ID, 'podcast_episode_cover', true ); + if ( ! empty( $episode_cover ) ) { + $feed_item['image'] = $episode_cover; + } } if ( has_excerpt() ) { diff --git a/includes/datatypes.php b/includes/datatypes.php index c35eea3f..07d5d688 100644 --- a/includes/datatypes.php +++ b/includes/datatypes.php @@ -111,6 +111,16 @@ function register_meta() { ) ); + \register_meta( + 'post', + 'podcast_episode_cover', + array( + 'show_in_rest' => true, + 'type' => 'string', + 'single' => true, + ) + ); + \register_meta( 'post', 'podcast_transcript', diff --git a/includes/post-meta-box.php b/includes/post-meta-box.php index 9935804b..dfdc4aea 100644 --- a/includes/post-meta-box.php +++ b/includes/post-meta-box.php @@ -37,6 +37,7 @@ function meta_box_html( $post ) { $season_number = get_post_meta( $post->ID, 'podcast_season_number', true ); $episode_number = get_post_meta( $post->ID, 'podcast_episode_number', true ); $episode_type = get_post_meta( $post->ID, 'podcast_episode_type', true ); + $episode_cover = get_post_meta( $post->ID, 'podcast_episode_cover', true ); wp_nonce_field( plugin_basename( __FILE__ ), 'simple-podcasting' ); ?> @@ -82,6 +83,11 @@ function meta_box_html( $post ) {

+

+ + + +

@@ -120,6 +126,7 @@ function save_meta_box( $post_id ) { $season_number = isset( $_post['podcast_season_number'] ) ? sanitize_text_field( $_post['podcast_season_number'] ) : ''; $episode_number = isset( $_post['podcast_episode_number'] ) ? sanitize_text_field( $_post['podcast_episode_number'] ) : ''; $episode_type = isset( $_post['podcast_episode_type'] ) && in_array( $_post['podcast_episode_type'], array( 'none', 'full', 'trailer', 'bonus' ), true ) ? sanitize_text_field( $_post['podcast_episode_type'] ) : ''; + $episode_cover = isset( $_post['podcast_episode_cover'] ) ? sanitize_text_field( $_post['podcast_episode_cover'] ) : ''; if ( isset( $_post['podcast_closed_captioned'] ) && 'on' === $_post['podcast_closed_captioned'] ) { $podcast_captioned = 1; @@ -174,6 +181,7 @@ function save_meta_box( $post_id ) { update_post_meta( $post_id, 'podcast_season_number', $season_number ); update_post_meta( $post_id, 'podcast_episode_number', $episode_number ); update_post_meta( $post_id, 'podcast_episode_type', $episode_type ); + update_post_meta( $post_id, 'podcast_episode_cover', $episode_cover ); } add_action( 'save_post_post', __NAMESPACE__ . '\save_meta_box' ); From 49b0ce530269937bc872370b49c535e844372df5 Mon Sep 17 00:00:00 2001 From: Peter Wilson <519727+peterwilsoncc@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:44:23 +1100 Subject: [PATCH 06/25] Prevent fatal error in WP 5.8 and earlier. --- includes/blocks.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/includes/blocks.php b/includes/blocks.php index a841b5a9..0b0b9f3a 100644 --- a/includes/blocks.php +++ b/includes/blocks.php @@ -387,17 +387,16 @@ function latest_episode_query_loop( $query ) { /** * Latest podcast check. * - * @param String $pre_render pre render object. - * @param Array $parsed_block parsed block object. - * @param WP_Block $parent_block parent block object. + * @param String $pre_render pre render object. + * @param Array $parsed_block parsed block object. */ -function latest_episode_check( $pre_render, $parsed_block, $parent_block ) { +function latest_episode_check( $pre_render, $parsed_block ) { if ( isset( $parsed_block['attrs']['namespace'] ) && 'podcasting/latest-episode' === $parsed_block['attrs']['namespace'] ) { add_action( 'query_loop_block_query_vars', __NAMESPACE__ . '\latest_episode_query_loop' ); } } -add_filter( 'pre_render_block', __NAMESPACE__ . '\latest_episode_check', 10, 3 ); +add_filter( 'pre_render_block', __NAMESPACE__ . '\latest_episode_check', 10, 2 ); /** * Latest podcast query in editor. From a6651f50c8a5a0162fe8d025418af4f61e6a58fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 02:48:27 +0000 Subject: [PATCH 07/25] Bump ip from 1.1.8 to 1.1.9 Bumps [ip](https://github.com/indutny/node-ip) from 1.1.8 to 1.1.9. - [Commits](https://github.com/indutny/node-ip/compare/v1.1.8...v1.1.9) --- updated-dependencies: - dependency-name: ip dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0aad64a5..b570f6a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13231,9 +13231,9 @@ } }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", "dev": true }, "node_modules/ipaddr.js": { @@ -20991,9 +20991,9 @@ } }, "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, "node_modules/source-map": { @@ -33683,9 +33683,9 @@ } }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", "dev": true }, "ipaddr.js": { @@ -39393,9 +39393,9 @@ }, "dependencies": { "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true } } From 8e2a7704e0d978552f9655f1d70555bd16216409 Mon Sep 17 00:00:00 2001 From: Peter Sorensen Date: Thu, 22 Feb 2024 09:06:34 -0800 Subject: [PATCH 08/25] allow feed title to be filtered --- includes/customize-feed.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/customize-feed.php b/includes/customize-feed.php index d0b0a7a6..cea63894 100644 --- a/includes/customize-feed.php +++ b/includes/customize-feed.php @@ -45,11 +45,11 @@ function bloginfo_rss_name( $output ) { $title = get_term_meta( $term->term_id, 'podcasting_title', true ); if ( empty( $title ) ) { $title = get_bloginfo( 'name' ); - $title = "$title » {$term->name}"; + $output = "$title » {$term->name}"; } else { $output = $title; } - + $output = apply_filters( 'simple_podcasting_feed_title', $output, $term ); return $output; } add_filter( 'wp_title_rss', __NAMESPACE__ . '\bloginfo_rss_name' ); From 73c666353fb6167bf12e548d55ff1a2203fb258f Mon Sep 17 00:00:00 2001 From: Peter Sorensen Date: Thu, 22 Feb 2024 09:08:34 -0800 Subject: [PATCH 09/25] adds test for filterable feed name --- tests/unit/test-customize-feed.php | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/unit/test-customize-feed.php b/tests/unit/test-customize-feed.php index 34016e12..9f3f085f 100644 --- a/tests/unit/test-customize-feed.php +++ b/tests/unit/test-customize-feed.php @@ -88,7 +88,7 @@ public function test_pre_get_posts_no_feed() { } public function test_pre_get_posts_feed() { - $query_mock = \Mockery::mock( '\WP_Query' ); + $query_mock = \Mockery::mock( '\WP_Query' ); $query_mock->shouldReceive( 'is_feed' )->andReturn( true ); @@ -176,6 +176,31 @@ function ( $text, $num_words, $more ) { } } + public function test_rss_title_can_be_filtered() { + \WP_Mock::userFunction( 'get_queried_object' ) + ->andReturn( + (object) array( + 'term_id' => 42, + 'name' => 'Original Podcast Name' + ) + ); + + \WP_Mock::userFunction( 'get_bloginfo' ) + ->with( 'name' ) + ->andReturn( 'Blogname' ); + + \WP_Mock::onFilter( 'simple_podcasting_feed_title' ) + ->with( 'Blogname » Original Podcast Name' ) + ->reply( 'Filtered Podcast Title' ); + + $this->assertEquals( + 'Filtered Podcast Title', + tenup_podcasting\bloginfo_rss_name( 'Podcast Title' ), + 'tenup_podcasting\bloginfo_rss_name() should return the filtered value.' + ); + + } + public function data_provider_for_test_feed_item() { return array( 'Term not found' => array( From e6e6ac06e3cad41934987b5d5310f71d8b923f36 Mon Sep 17 00:00:00 2001 From: Peter Sorensen Date: Thu, 22 Feb 2024 09:08:50 -0800 Subject: [PATCH 10/25] update docs with filterable feed name --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 48fca72c..a8bc2c76 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,29 @@ function podcasting_feed_episodes_per_page( $qty ) { ``` +## Customize the RSS feed title +The `` element of the RSS feed can be adjusted using the `simple_podcasting_feed_title` filter. + +```php +<?php + +add_filter( 'simple_podcasting_feed_title', 'podcasting_feed_update_feed_title', 10, 2 ); + +/** + * Filter the name of the of the feed channel + * + * @param $output Output to be modified. + * @param $term WP_Term object representing the podcast + * @return string + */ +function podcasting_feed_update_feed_title( $output, $term ) { + $term_name = $term->name; + + return '10up Presents: ' . $term_name; +} + +``` + ## Customize RSS feed If you want to modify RSS feed items output, there is a filter for that: From 8a90777915ac4838845935fb52ed9a0ebd002685 Mon Sep 17 00:00:00 2001 From: Peter Sorensen <peter.sorensen@get10up.com> Date: Thu, 22 Feb 2024 09:42:31 -0800 Subject: [PATCH 11/25] fix tests --- includes/customize-feed.php | 5 +++-- tests/unit/test-customize-feed.php | 14 +++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/includes/customize-feed.php b/includes/customize-feed.php index cea63894..7d022a0f 100644 --- a/includes/customize-feed.php +++ b/includes/customize-feed.php @@ -49,8 +49,9 @@ function bloginfo_rss_name( $output ) { } else { $output = $title; } - $output = apply_filters( 'simple_podcasting_feed_title', $output, $term ); - return $output; + + return apply_filters( 'simple_podcasting_feed_title', $output, $term ); + } add_filter( 'wp_title_rss', __NAMESPACE__ . '\bloginfo_rss_name' ); diff --git a/tests/unit/test-customize-feed.php b/tests/unit/test-customize-feed.php index 9f3f085f..6ed87866 100644 --- a/tests/unit/test-customize-feed.php +++ b/tests/unit/test-customize-feed.php @@ -177,20 +177,20 @@ function ( $text, $num_words, $more ) { } public function test_rss_title_can_be_filtered() { + $queried_object = (object) array( + 'term_id' => 42, + 'name' => 'Original Podcast Name' + ); \WP_Mock::userFunction( 'get_queried_object' ) - ->andReturn( - (object) array( - 'term_id' => 42, - 'name' => 'Original Podcast Name' - ) - ); + ->andReturn( $queried_object ); \WP_Mock::userFunction( 'get_bloginfo' ) ->with( 'name' ) ->andReturn( 'Blogname' ); + \WP_Mock::onFilter( 'simple_podcasting_feed_title' ) - ->with( 'Blogname » Original Podcast Name' ) + ->with( 'Blogname » Original Podcast Name', $queried_object ) ->reply( 'Filtered Podcast Title' ); $this->assertEquals( From 78487535ce1a55f331fb961307748e16c42fb7fc Mon Sep 17 00:00:00 2001 From: Zaman <personalzaman@gmail.com> Date: Mon, 26 Feb 2024 01:32:23 +0600 Subject: [PATCH 12/25] Refactored the implementation to leverage the featured image in the block sidebar --- assets/js/blocks.js | 5 -- assets/js/edit.js | 82 +++++++++++++++++++------------ assets/js/podcasting-edit-post.js | 36 -------------- includes/customize-feed.php | 5 -- includes/datatypes.php | 10 ---- includes/post-meta-box.php | 12 ++--- 6 files changed, 57 insertions(+), 93 deletions(-) diff --git a/assets/js/blocks.js b/assets/js/blocks.js index b88a417e..731fb84b 100755 --- a/assets/js/blocks.js +++ b/assets/js/blocks.js @@ -89,11 +89,6 @@ export default registerBlockType( source: 'meta', meta: 'podcast_episode_type', }, - episodeCover: { - type: 'string', - source: 'meta', - meta: 'podcast_episode_cover', - }, }, transforms, diff --git a/assets/js/edit.js b/assets/js/edit.js index 644cf064..f561a727 100644 --- a/assets/js/edit.js +++ b/assets/js/edit.js @@ -6,13 +6,13 @@ const { MediaPlaceholder, MediaReplaceFlow, MediaUpload, + MediaUploadCheck, RichText, } = wp.blockEditor; const { FormToggle, PanelBody, PanelRow, - PanelHeader, SelectControl, TextControl, RadioControl, @@ -23,7 +23,7 @@ const { apiFetch } = wp; const ALLOWED_MEDIA_TYPES = ['audio']; import { Button } from '@wordpress/components'; -import { dispatch } from '@wordpress/data'; +import { dispatch, useSelect, useDispatch } from '@wordpress/data'; import { createBlock } from '@wordpress/blocks'; /* @@ -33,6 +33,23 @@ import { createBlock } from '@wordpress/blocks'; */ import HierarchicalTermSelector from './term-selector/hierarchical-term-selector'; +function useFeaturedImage() { + const featuredImageId = useSelect((select) => select('core/editor').getEditedPostAttribute('featured_media'), []); + const { editPost } = useDispatch('core/editor'); + + const featuredImageUrl = useSelect((select) => { + const { getMedia } = select('core'); + const image = getMedia(featuredImageId); + return image?.source_url; + }, [featuredImageId]); + + const setFeaturedImage = (imageId) => { + editPost({ featured_media: imageId }); + }; + + return { featuredImageUrl, setFeaturedImage }; +} + class Edit extends Component { constructor({ className }) { super(...arguments); @@ -52,14 +69,19 @@ class Edit extends Component { } render() { - const { setAttributes, isSelected, attributes } = this.props; + const { + setAttributes, + isSelected, + attributes, + featuredImageUrl, + setFeaturedImage + } = this.props; const { caption, explicit } = attributes; const duration = attributes.duration || ''; const captioned = attributes.captioned || ''; const seasonNumber = attributes.seasonNumber || ''; const episodeNumber = attributes.episodeNumber || ''; const episodeType = attributes.episodeType || ''; - const episodeCover = attributes.episodeCover || ''; const { className, src } = this.state; const onSelectAttachment = (attachment) => { @@ -147,6 +169,10 @@ class Edit extends Component { </BlockControls> ); + const onUpdateImage = (image) => { + setFeaturedImage(image.id); + }; + return ( <Fragment> {controls} @@ -276,35 +302,23 @@ class Edit extends Component { {__('Add Transcript', 'simple-podcasting')} </Button> </PanelRow> + <h3 style={{marginTop: '20px'}}>{__('Cover Image', 'simple-podcasting')}</h3> + <p>{__('The featured image of the current post is used as the episode cover art. Please select a featured image to set it.', 'simple-podcasting')}</p> <PanelRow> - <MediaUpload - onSelect={(media) => { - setAttributes({ - episodeCover: media.url - }) - }} - multiple={false} - allowedTypes={['image/gif']} - value={episodeCover} - render={({ open }) => ( - <Button onClick={open} variant='secondary'> - {episodeCover ? - __('Replace Cover', 'simple-podcasting') : - __('Add Cover Art', 'simple-podcasting')} - </Button> - )} - /> - {episodeCover && ( - <Button variant='secondary' isDestructive onClick={() => setAttributes({ episodeCover: '' })}> - {__('Remove Cover', 'simple-podcasting')} - </Button> + {featuredImageUrl && ( + <img src={featuredImageUrl} alt="Cover Image" /> )} + + <MediaUploadCheck> + <MediaUpload + onSelect={onUpdateImage} + allowedTypes={['image/gif']} + render={({ open }) => ( + <Button onClick={open}>{__('Select Cover Art', 'simple-podcasting')}</Button> + )} + /> + </MediaUploadCheck> </PanelRow> - {episodeCover && ( - <PanelRow> - <img src={episodeCover} alt='Episode cover image' /> - </PanelRow> - )} </PanelBody> </InspectorControls> <div className={className}> @@ -350,4 +364,10 @@ class Edit extends Component { } } -export default Edit; +function PodcastBlockWithHooks(props) { + const featuredImageProp = useFeaturedImage(); + + return <Edit {...props} {...featuredImageProp} />; +} + +export default PodcastBlockWithHooks; diff --git a/assets/js/podcasting-edit-post.js b/assets/js/podcasting-edit-post.js index e3028ce8..c51c4a9e 100644 --- a/assets/js/podcasting-edit-post.js +++ b/assets/js/podcasting-edit-post.js @@ -34,40 +34,4 @@ jQuery( document ).ready( function( $ ) { mediaUploader.open(); } ); - - // Handle Episode Cover Image - $( '#podcasting-episode-cover-button' ).click( function( e ) { - e.preventDefault(); - - var $this = $( this ), - $input = $( 'input#podcasting-episode-cover' ), - mediaUploader; - - // If the uploader object has already been created, reopen the dialog. - if ( mediaUploader ) { - mediaUploader.open(); - return; - } - - // eslint-disable-next-line camelcase - mediaUploader = wp.media.frames.file_frame = wp.media( { - title: $this.data( 'modalTitle' ), - button: { - text: $this.data( 'modalButton' ) - }, - library: { - type: 'image/gif' - }, - multiple: false - }); - - mediaUploader.off( 'select' ); - mediaUploader.on( 'select', function() { - var attachment = mediaUploader.state().get('selection').first(); - - $input.val( attachment.get('url') ); - }); - - mediaUploader.open(); - } ); } ); diff --git a/includes/customize-feed.php b/includes/customize-feed.php index 6b4c86ba..d0b0a7a6 100644 --- a/includes/customize-feed.php +++ b/includes/customize-feed.php @@ -215,11 +215,6 @@ function feed_item() { if ( ! empty( $feed_item['image'] ) && is_array( $feed_item['image'] ) ) { $feed_item['image'] = $feed_item['image'][0]; } - } else { - $episode_cover = get_post_meta( $post->ID, 'podcast_episode_cover', true ); - if ( ! empty( $episode_cover ) ) { - $feed_item['image'] = $episode_cover; - } } if ( has_excerpt() ) { diff --git a/includes/datatypes.php b/includes/datatypes.php index 07d5d688..c35eea3f 100644 --- a/includes/datatypes.php +++ b/includes/datatypes.php @@ -111,16 +111,6 @@ function register_meta() { ) ); - \register_meta( - 'post', - 'podcast_episode_cover', - array( - 'show_in_rest' => true, - 'type' => 'string', - 'single' => true, - ) - ); - \register_meta( 'post', 'podcast_transcript', diff --git a/includes/post-meta-box.php b/includes/post-meta-box.php index dfdc4aea..d0a1ad37 100644 --- a/includes/post-meta-box.php +++ b/includes/post-meta-box.php @@ -37,7 +37,7 @@ function meta_box_html( $post ) { $season_number = get_post_meta( $post->ID, 'podcast_season_number', true ); $episode_number = get_post_meta( $post->ID, 'podcast_episode_number', true ); $episode_type = get_post_meta( $post->ID, 'podcast_episode_type', true ); - $episode_cover = get_post_meta( $post->ID, 'podcast_episode_cover', true ); + $episode_cover = has_post_thumbnail( $post->ID ) ? get_the_post_thumbnail_url( $post->ID, 'thumbnail' ) : ''; wp_nonce_field( plugin_basename( __FILE__ ), 'simple-podcasting' ); ?> @@ -84,9 +84,11 @@ function meta_box_html( $post ) { </p> </div> <p> - <label for="podcasting-episode-cover"><?php esc_html_e( 'Episode Cover Art', 'simple-podcasting' ); ?></label> - <input type="text" id="podcasting-episode-cover" name="podcast_episode_cover" value="<?php echo esc_url( $episode_cover ); ?>" size="35" /> - <input type="button" id="podcasting-episode-cover-button" value="<?php esc_attr_e( 'Select Cover Art', 'simple-podcasting' ); ?>" class="button" data-modal-title="<?php esc_attr_e( 'Episode Cover Art', 'simple-podcasting' ); ?>" data-modal-button="<?php esc_attr_e( 'Select this image', 'simple-podcasting' ); ?>" /> + <label for="podcasting-episode-cover"><?php esc_html_e( 'Episode Cover', 'simple-podcasting' ); ?></label> + <p><?php esc_html_e( 'The featured image of the current post is used as the episode cover art. Please select a featured image to set it.', 'simple-podcasting' ); ?></p> + <?php if ( ! empty( $episode_cover ) ) : ?> + <img src="<?php echo esc_url( $episode_cover ); ?>" alt="<?php esc_attr_e( 'Cover Art', 'simple-podcasting' ); ?>" /> + <?php endif; ?> </p> <p> <label for="podcasting-enclosure-url"><?php esc_html_e( 'Enclosure', 'simple-podcasting' ); ?></label> @@ -126,7 +128,6 @@ function save_meta_box( $post_id ) { $season_number = isset( $_post['podcast_season_number'] ) ? sanitize_text_field( $_post['podcast_season_number'] ) : ''; $episode_number = isset( $_post['podcast_episode_number'] ) ? sanitize_text_field( $_post['podcast_episode_number'] ) : ''; $episode_type = isset( $_post['podcast_episode_type'] ) && in_array( $_post['podcast_episode_type'], array( 'none', 'full', 'trailer', 'bonus' ), true ) ? sanitize_text_field( $_post['podcast_episode_type'] ) : ''; - $episode_cover = isset( $_post['podcast_episode_cover'] ) ? sanitize_text_field( $_post['podcast_episode_cover'] ) : ''; if ( isset( $_post['podcast_closed_captioned'] ) && 'on' === $_post['podcast_closed_captioned'] ) { $podcast_captioned = 1; @@ -181,7 +182,6 @@ function save_meta_box( $post_id ) { update_post_meta( $post_id, 'podcast_season_number', $season_number ); update_post_meta( $post_id, 'podcast_episode_number', $episode_number ); update_post_meta( $post_id, 'podcast_episode_type', $episode_type ); - update_post_meta( $post_id, 'podcast_episode_cover', $episode_cover ); } add_action( 'save_post_post', __NAMESPACE__ . '\save_meta_box' ); From 097a6031ad75d8f1885834d73da1a476ef719f58 Mon Sep 17 00:00:00 2001 From: Darin Kotter <darin.kotter@gmail.com> Date: Mon, 26 Feb 2024 10:27:48 -0700 Subject: [PATCH 13/25] Add extra space --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a8bc2c76..14177ce2 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ function podcasting_feed_episodes_per_page( $qty ) { ``` ## Customize the RSS feed title + The `<title>` element of the RSS feed can be adjusted using the `simple_podcasting_feed_title` filter. ```php From 5f579fd014745a68adb44076fc9701cf697a67ed Mon Sep 17 00:00:00 2001 From: Zaman <personalzaman@gmail.com> Date: Tue, 27 Feb 2024 13:36:46 +0600 Subject: [PATCH 14/25] Added Image Removal Functionality and Styling --- assets/css/podcasting-editor-screen.css | 9 +++++++++ assets/js/edit.js | 24 +++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/assets/css/podcasting-editor-screen.css b/assets/css/podcasting-editor-screen.css index fefe73ba..2566d930 100644 --- a/assets/css/podcasting-editor-screen.css +++ b/assets/css/podcasting-editor-screen.css @@ -2,3 +2,12 @@ .components-base-control { width: 100%; } +.cover-art-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.cover-art-container button { + margin: 10px 0; +} diff --git a/assets/js/edit.js b/assets/js/edit.js index f561a727..f2b736a0 100644 --- a/assets/js/edit.js +++ b/assets/js/edit.js @@ -47,7 +47,11 @@ function useFeaturedImage() { editPost({ featured_media: imageId }); }; - return { featuredImageUrl, setFeaturedImage }; + const removeFeaturedImage = () => { + editPost({ featured_media: 0 }); + }; + + return { featuredImageUrl, setFeaturedImage, removeFeaturedImage }; } class Edit extends Component { @@ -74,7 +78,8 @@ class Edit extends Component { isSelected, attributes, featuredImageUrl, - setFeaturedImage + setFeaturedImage, + removeFeaturedImage } = this.props; const { caption, explicit } = attributes; const duration = attributes.duration || ''; @@ -304,7 +309,7 @@ class Edit extends Component { </PanelRow> <h3 style={{marginTop: '20px'}}>{__('Cover Image', 'simple-podcasting')}</h3> <p>{__('The featured image of the current post is used as the episode cover art. Please select a featured image to set it.', 'simple-podcasting')}</p> - <PanelRow> + <PanelRow className="cover-art-container"> {featuredImageUrl && ( <img src={featuredImageUrl} alt="Cover Image" /> )} @@ -312,12 +317,21 @@ class Edit extends Component { <MediaUploadCheck> <MediaUpload onSelect={onUpdateImage} - allowedTypes={['image/gif']} + allowedTypes={['image']} render={({ open }) => ( - <Button onClick={open}>{__('Select Cover Art', 'simple-podcasting')}</Button> + <Button isSecondary onClick={open}> + {featuredImageUrl ? + __('Replace Cover Art', 'simple-podcasting') + : + __('Select Cover Art', 'simple-podcasting') + } + </Button> )} /> </MediaUploadCheck> + {featuredImageUrl && ( + <Button isLink isDestructive onClick={removeFeaturedImage}>{__('Delete Cover Art', 'simple-podcasting')}</Button> + )} </PanelRow> </PanelBody> </InspectorControls> From fcba01dfc2104de6561d026d073de600184d4b26 Mon Sep 17 00:00:00 2001 From: Dharmesh Patel <dspatel44@gmail.com> Date: Fri, 1 Mar 2024 14:57:01 +0530 Subject: [PATCH 15/25] Add value to `MediaUpload` to pre-select selected cover art. --- assets/js/edit.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/js/edit.js b/assets/js/edit.js index f2b736a0..d7db03ad 100644 --- a/assets/js/edit.js +++ b/assets/js/edit.js @@ -51,7 +51,7 @@ function useFeaturedImage() { editPost({ featured_media: 0 }); }; - return { featuredImageUrl, setFeaturedImage, removeFeaturedImage }; + return { featuredImageUrl, setFeaturedImage, removeFeaturedImage, featuredImageId }; } class Edit extends Component { @@ -79,7 +79,8 @@ class Edit extends Component { attributes, featuredImageUrl, setFeaturedImage, - removeFeaturedImage + removeFeaturedImage, + featuredImageId } = this.props; const { caption, explicit } = attributes; const duration = attributes.duration || ''; @@ -327,6 +328,7 @@ class Edit extends Component { } </Button> )} + value={featuredImageId} /> </MediaUploadCheck> {featuredImageUrl && ( From 5589ff7bedc2df2bb0cd8fd4b51ecba3e25e7043 Mon Sep 17 00:00:00 2001 From: Dharmesh Patel <dspatel44@gmail.com> Date: Mon, 11 Mar 2024 22:46:45 +0530 Subject: [PATCH 16/25] Disable auto sync PRs with target branch --- .github/workflows/repo-automator.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/repo-automator.yml b/.github/workflows/repo-automator.yml index 54bd01bb..dc7ccbd5 100644 --- a/.github/workflows/repo-automator.yml +++ b/.github/workflows/repo-automator.yml @@ -25,7 +25,6 @@ jobs: fail-label: needs:feedback pass-label: needs:code-review conflict-label: needs:refresh - sync-pr-branch: true reviewers: | team:open-source-practice env: From 8dffb67941029eef47d052d5c75a073185b0b324 Mon Sep 17 00:00:00 2001 From: Dharmesh Patel <dspatel44@gmail.com> Date: Tue, 19 Mar 2024 21:50:10 +0530 Subject: [PATCH 17/25] Upgrade the `download-artifact` from v3 to v4 --- .github/workflows/cypress.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index d7f07034..ad0781bc 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 - name: Download build zip - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{ github.event.repository.name }} path: ${{ github.event.repository.name }} @@ -68,7 +68,7 @@ jobs: npx mochawesome-report-generator tests/cypress/reports/mochawesome.json -o tests/cypress/reports/ cat ./tests/cypress/reports/mochawesome.md >> $GITHUB_STEP_SUMMARY - name: Make artifacts available - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() with: name: cypress-artifact From c9ac92b38c2e53835b88749e963978513bfd23fe Mon Sep 17 00:00:00 2001 From: Dharmesh Patel <dspatel44@gmail.com> Date: Tue, 19 Mar 2024 22:23:06 +0530 Subject: [PATCH 18/25] Delete and PULL_REQUEST_TEMPLATE.md use https://github.com/10up/.github/blob/trunk/.github/PULL_REQUEST_TEMPLATE.md instead --- .github/PULL_REQUEST_TEMPLATE.md | 65 -------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7d6d4289..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,65 +0,0 @@ -<!-- -### Requirements - -Filling out the template is required. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. All new code requires documentation and tests to ensure against regressions. ---> - -### Description of the Change - -<!-- -We must be able to understand the design of your change from this description. If we can't get a good idea of what the code will be doing from the description here, the pull request may be closed at the maintainers' discretion. Also including any benefits that will be realized by the code change will be helpful. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code here recently, so please walk us through the concepts. Please include screenshots (if appropriate). ---> - -<!-- Enter any applicable Issues here. Example: --> -Closes # - -### Alternate Designs - -<!-- Explain what other alternates were considered and why the proposed version was selected. --> - -### Possible Drawbacks - -<!-- What are the possible side-effects or negative impacts of the code change? --> - -### Verification Process - -<!-- -What process did you follow to verify that your change has the desired effects? - -- How did you verify that all new functionality works as expected? -- How did you verify that all changed functionality works as expected? -- How did you verify that the change has not introduced any regressions? - -Describe the actions you performed (e.g., commands you ran, text you typed, buttons you clicked) and describe the results you observed. ---> - -### Checklist: - -<!--- Go over all the following points, and put an `x` in all the boxes that apply. --> -<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> -- [ ] I have read the [**CONTRIBUTING**](/CONTRIBUTING.md) document. -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. -- [ ] I have added tests to cover my change. -- [ ] All new and existing tests passed. - -<!-- _NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open._ --> - -### Changelog Entry - -<!-- -Add sample CHANGELOG.md entry for this PR, noting whether this is something being Added / Changed / Deprecated / Removed / Fixed / or Security related. -Example: -> Added - New feature -> Changed - Existing functionality -> Deprecated - Soon-to-be removed feature -> Removed - Feature -> Fixed - Bug fix -> Security - Vulnerability ---> - -### Credits - -<!-- Please list any and all contributors on this PR and any linked issue so that they can be added to this projects CREDITS.md file. --> -Props @ From d0ad50326da5ab1b6dc2d840eedabe8bc81fa41f Mon Sep 17 00:00:00 2001 From: Jeffrey Paul <jeffpaul@hotmail.com> Date: Wed, 20 Mar 2024 08:43:08 -0500 Subject: [PATCH 19/25] Update and rename `no-response.yml` to `close-stale-issues.yml` --- ...no-response.yml => close-stale-issues.yml} | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) rename .github/workflows/{no-response.yml => close-stale-issues.yml} (55%) diff --git a/.github/workflows/no-response.yml b/.github/workflows/close-stale-issues.yml similarity index 55% rename from .github/workflows/no-response.yml rename to .github/workflows/close-stale-issues.yml index ce0c42f1..4ffcfbc8 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/close-stale-issues.yml @@ -1,26 +1,27 @@ -name: No Response +name: 'Close stale issues' # **What it does**: Closes issues where the original author doesn't respond to a request for information. # **Why we have it**: To remove the need for maintainers to remember to check back on issues periodically to see if contributors have responded. -# **Who does it impact**: Everyone that works on docs or docs-internal. on: - issue_comment: - types: [created] schedule: - # Schedule for five minutes after the hour, every hour - - cron: '5 * * * *' + # Schedule for every day at 1:30am UTC + - cron: '30 1 * * *' + +permissions: + issues: write jobs: - noResponse: + stale: runs-on: ubuntu-latest steps: - - uses: lee-dohm/no-response@v0.5.0 + - uses: actions/stale@v9 with: - token: ${{ github.token }} - daysUntilClose: 14 # Number of days of inactivity before an Issue is closed for lack of response - responseRequiredLabel: "needs:feedback" # Label indicating that a response from the original author is required - closeComment: > + days-before-stale: 7 + days-before-close: 7 + stale-issue-message: > + It has been 7 days since more information was requested from you in this issue and we have not heard back. This issue is now marked as stale and will be closed in 7 days, but if you have more information to add then please comment and the issue will stay open. + close-issue-message: > This issue has been automatically closed because there has been no response to our request for more information. With only the information that is currently in the issue, we don't have enough information @@ -28,3 +29,8 @@ jobs: that we can investigate further. See [this blog post on bug reports and the importance of repro steps](https://www.lee-dohm.com/2015/01/04/writing-good-bug-reports/) for more information about the kind of information that may be helpful. + stale-issue-label: 'stale' + close-issue-reason: 'not_planned' + any-of-labels: 'needs:feedback' + remove-stale-when-updated: true + From b2c4ea4d6a528b4933ccc0b84b577a616363024a Mon Sep 17 00:00:00 2001 From: Siddharth Thevaril <siddharth.thevaril@gmail.com> Date: Tue, 12 Mar 2024 16:28:08 +0530 Subject: [PATCH 20/25] update CHANGELOG.md, readme.txt --- CHANGELOG.md | 15 +++++++++++++++ readme.txt | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 624daafb..d87ea043 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file, per [the Ke ## [Unreleased] - TBD +## [1.8.0] - 2024-03-13 +### Added +- Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). +- `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). +- "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). + +### Fixed +- Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). +- Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). + +### Changed +- Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). +- Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). + ## [1.7.0] - 2024-01-16 ### Added - Ability to add a transcript to a podcast episode by utilizing a new Podcast Transcript block. This block is added by clicking the `Add Transcript` button that will now show in the sidebar panel of the Podcast block (props [@nateconley](https://github.com/nateconley), [@peterwilsoncc](https://github.com/peterwilsoncc), [@sksaju](https://github.com/sksaju), [@kirtangajjar](https://github.com/kirtangajjar) via [#221](https://github.com/10up/simple-podcasting/pull/221)). @@ -229,6 +243,7 @@ All notable changes to this project will be documented in this file, per [the Ke - Initial plugin release. [Unreleased]: https://github.com/10up/simple-podcasting/compare/trunk...develop +[1.8.0]: https://github.com/10up/simple-podcasting/compare/1.7.0...1.8.0 [1.7.0]: https://github.com/10up/simple-podcasting/compare/1.6.1...1.7.0 [1.6.1]: https://github.com/10up/simple-podcasting/compare/1.6.0...1.6.1 [1.6.0]: https://github.com/10up/simple-podcasting/compare/1.5.0...1.6.0 diff --git a/readme.txt b/readme.txt index fed09324..d57401d2 100644 --- a/readme.txt +++ b/readme.txt @@ -120,6 +120,15 @@ add_filter( 'simple_podcasting_feed_item', 'podcasting_feed_item_filter', 10, 3 == Changelog == += 1.8.0 - 2024-03-13 = +* **Added:** Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). +* **Added:** `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). +* **Added:** "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). +* **Fixed:** Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). +* **Fixed:** Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). +* **Changed:** Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). +* **Changed:** Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). + = 1.7.0 - 2024-01-16 = * **Added:** Ability to add a transcript to a podcast episode by utilizing a new Podcast Transcript block. This block is added by clicking the `Add Transcript` button that will now show in the sidebar panel of the Podcast block (props [@nateconley](https://github.com/nateconley), [@peterwilsoncc](https://github.com/peterwilsoncc), [@sksaju](https://github.com/sksaju), [@kirtangajjar](https://github.com/kirtangajjar) via [#221](https://github.com/10up/simple-podcasting/pull/221)). * **Added:** Support for the WordPress.org plugin preview (props [@dkotter](https://github.com/dkotter), [@jeffpaul](https://github.com/jeffpaul) via [#265](https://github.com/10up/simple-podcasting/pull/265)). From e538c3f87fc0afd6c1b2a0e3c6bbf16a8bdde3f8 Mon Sep 17 00:00:00 2001 From: Siddharth Thevaril <siddharth.thevaril@gmail.com> Date: Tue, 12 Mar 2024 16:33:37 +0530 Subject: [PATCH 21/25] update CREDITS.md --- CREDITS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index c2548e8c..021c9b72 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -10,7 +10,7 @@ The following individuals are responsible for curating the list of issues, respo Thank you to all the people who have already contributed to this repository via bug reports, code, design, ideas, project management, translation, testing, etc. -[Adam Silverstein (@adamsilverstein)](https://github.com/adamsilverstein), [Helen Hou-Sandi (@helen)](https://github.com/helen), [Ryan Welcher (@ryanwelcher)](https://github.com/ryanwelcher), [David Chandra Purnama (@turtlepod)](https://github.com/turtlepod), [Oscar Sanchez S. (@oscarssanchez)](https://github.com/oscarssanchez), [Jon Christensen (@Firestorm980)](https://github.com/Firestorm980), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Noah Halstead (@nhalstead)](https://github.com/nhalstead), [Matthew Haines-Young (@mattheu)](https://github.com/mattheu), [Tung Du (@dinhtungdu)](https://github.com/dinhtungdu), [David Chabbi](https://www.linkedin.com/in/david-chabbi-985719b4/), [Pablo Amato (@pabamato)](https://github.com/pabamato), [(@monomo111)](https://github.com/monomo111), [Jake Goldman (@jakemgold)](https://github.com/jakemgold), [Mark Jaquith (@markjaquith)](https://github.com/markjaquith), [Riad Benguella (@youknowriad)](https://github.com/youknowriad), [Mészáros Róbert (@meszarosrob)](https://github.com/meszarosrob), [Max Lyuchin (@cadic)](https://github.com/cadic), [Dharmesh Patel (@iamdharmesh)](https://github.com/iamdharmesh), [Darin Kotter (@dkotter)](https://github.com/dkotter), [Peter Wilson (@peterwilsoncc)](https://github.com/peterwilsoncc), [Felipe Elia (@felipeelia)](https://github.com/felipeelia), [Mehidi Hassan (@mehidi258)](https://github.com/mehidi258), [Tom J Nowell (@tomjn)](https://github.com/tomjn), [David Towoju (@davexpression)](https://github.com/davexpression), [Quamruz Zaman (@zamanq)](https://github.com/zamanq), [Debashish (@dchucks)](https://github.com/dchucks), [(@supersmo)](https://github.com/supersmo), [Jayedul Kabir (@jayedul)](https://github.com/jayedul), [Faisal Alvi (@faisal-alvi)](https://github.com/faisal-alvi), [Vikram Mopharty (@vikrampm1)](https://github.com/vikrampm1), [Siddharth Thevaril (@Sidsector9)](https://github.com/Sidsector9), [Nicolas Knight (@Nicolas-knight)](https://github.com/Nicolas-knight), [Jonathan Netek (@jnetek)](https://github.com/jnetek), [Mehul Gohil (@mehul0810)](https://github.com/mehul0810), [Nate Conley (@nateconley)](https://github.com/nateconley), [Ajay Maurya (@ajmaurya99)](https://github.com/ajmaurya99), [Nickolas Kola (@nickolas-kola)](https://github.com/nickolas-kola), [Ahamed Arshad Azmi (@achchu93)](https://github.com/achchu93), [Ivan Ivanić (@Spoygg)](https://github.com/Spoygg), [Garth Gutenberg (@ggutenberg)](https://github.com/ggutenberg), [Ravinder Kumar (@ravinderk)](https://github.com/ravinderk), [Konstantinos Galanakis (@kmgalanakis)](https://github.com/kmgalanakis), [Dependabot (@dependabot)](https://github.com/apps/dependabot), [Sumit Bagthariya (@qasumitbagthariya)](https://github.com/qasumitbagthariya), [Shazahan Kabir Saju (@sksaju)](https://github.com/sksaju), [Kirtan Gajjar (@kirtangajjar)](https://github.com/kirtangajjar), [Chetra Chann (@channchetra)](https://github.com/channchetra). +[Adam Silverstein (@adamsilverstein)](https://github.com/adamsilverstein), [Helen Hou-Sandi (@helen)](https://github.com/helen), [Ryan Welcher (@ryanwelcher)](https://github.com/ryanwelcher), [David Chandra Purnama (@turtlepod)](https://github.com/turtlepod), [Oscar Sanchez S. (@oscarssanchez)](https://github.com/oscarssanchez), [Jon Christensen (@Firestorm980)](https://github.com/Firestorm980), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Noah Halstead (@nhalstead)](https://github.com/nhalstead), [Matthew Haines-Young (@mattheu)](https://github.com/mattheu), [Tung Du (@dinhtungdu)](https://github.com/dinhtungdu), [David Chabbi](https://www.linkedin.com/in/david-chabbi-985719b4/), [Pablo Amato (@pabamato)](https://github.com/pabamato), [(@monomo111)](https://github.com/monomo111), [Jake Goldman (@jakemgold)](https://github.com/jakemgold), [Mark Jaquith (@markjaquith)](https://github.com/markjaquith), [Riad Benguella (@youknowriad)](https://github.com/youknowriad), [Mészáros Róbert (@meszarosrob)](https://github.com/meszarosrob), [Max Lyuchin (@cadic)](https://github.com/cadic), [Dharmesh Patel (@iamdharmesh)](https://github.com/iamdharmesh), [Darin Kotter (@dkotter)](https://github.com/dkotter), [Peter Wilson (@peterwilsoncc)](https://github.com/peterwilsoncc), [Felipe Elia (@felipeelia)](https://github.com/felipeelia), [Mehidi Hassan (@mehidi258)](https://github.com/mehidi258), [Tom J Nowell (@tomjn)](https://github.com/tomjn), [David Towoju (@davexpression)](https://github.com/davexpression), [Quamruz Zaman (@zamanq)](https://github.com/zamanq), [Debashish (@dchucks)](https://github.com/dchucks), [(@supersmo)](https://github.com/supersmo), [Jayedul Kabir (@jayedul)](https://github.com/jayedul), [Faisal Alvi (@faisal-alvi)](https://github.com/faisal-alvi), [Vikram Mopharty (@vikrampm1)](https://github.com/vikrampm1), [Siddharth Thevaril (@Sidsector9)](https://github.com/Sidsector9), [Nicolas Knight (@Nicolas-knight)](https://github.com/Nicolas-knight), [Jonathan Netek (@jnetek)](https://github.com/jnetek), [Mehul Gohil (@mehul0810)](https://github.com/mehul0810), [Nate Conley (@nateconley)](https://github.com/nateconley), [Ajay Maurya (@ajmaurya99)](https://github.com/ajmaurya99), [Nickolas Kola (@nickolas-kola)](https://github.com/nickolas-kola), [Ahamed Arshad Azmi (@achchu93)](https://github.com/achchu93), [Ivan Ivanić (@Spoygg)](https://github.com/Spoygg), [Garth Gutenberg (@ggutenberg)](https://github.com/ggutenberg), [Ravinder Kumar (@ravinderk)](https://github.com/ravinderk), [Konstantinos Galanakis (@kmgalanakis)](https://github.com/kmgalanakis), [Dependabot (@dependabot)](https://github.com/apps/dependabot), [Sumit Bagthariya (@qasumitbagthariya)](https://github.com/qasumitbagthariya), [Shazahan Kabir Saju (@sksaju)](https://github.com/sksaju), [Kirtan Gajjar (@kirtangajjar)](https://github.com/kirtangajjar), [Chetra Chann (@channchetra)](https://github.com/channchetra), [James Burgos (@jamesburgos)](https://github.com/jamesburgos), [Martin Burch (@martinburch)](https://github.com/martinburch), [Peter Sorensen (@psorensen)](https://github.com/psorensen), [Barney Jeffries (@barneyjeffries)](https://github.com/barneyjeffries). ## Libraries From 3a5b43d4b918ee4368f55fb5c49d6a749655221f Mon Sep 17 00:00:00 2001 From: Jeffrey Paul <jeffpaul@hotmail.com> Date: Tue, 12 Mar 2024 13:10:13 -0500 Subject: [PATCH 22/25] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d87ea043..824d06d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,18 +6,20 @@ All notable changes to this project will be documented in this file, per [the Ke ## [1.8.0] - 2024-03-13 ### Added +- "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). - Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). - `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). -- "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). ### Fixed - Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). - Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). ### Changed -- Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). - Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). +### Security +- Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). + ## [1.7.0] - 2024-01-16 ### Added - Ability to add a transcript to a podcast episode by utilizing a new Podcast Transcript block. This block is added by clicking the `Add Transcript` button that will now show in the sidebar panel of the Podcast block (props [@nateconley](https://github.com/nateconley), [@peterwilsoncc](https://github.com/peterwilsoncc), [@sksaju](https://github.com/sksaju), [@kirtangajjar](https://github.com/kirtangajjar) via [#221](https://github.com/10up/simple-podcasting/pull/221)). From 2faecf9211649fc6bfd46dbf5d1cc898339e46bd Mon Sep 17 00:00:00 2001 From: Jeffrey Paul <jeffpaul@hotmail.com> Date: Tue, 12 Mar 2024 13:10:42 -0500 Subject: [PATCH 23/25] Update readme.txt --- readme.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.txt b/readme.txt index d57401d2..f4dd1bb9 100644 --- a/readme.txt +++ b/readme.txt @@ -121,13 +121,13 @@ add_filter( 'simple_podcasting_feed_item', 'podcasting_feed_item_filter', 10, 3 == Changelog == = 1.8.0 - 2024-03-13 = +* **Added:** "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). * **Added:** Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). * **Added:** `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). -* **Added:** "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). * **Fixed:** Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). * **Fixed:** Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). -* **Changed:** Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). * **Changed:** Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). +* **Security:** Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). = 1.7.0 - 2024-01-16 = * **Added:** Ability to add a transcript to a podcast episode by utilizing a new Podcast Transcript block. This block is added by clicking the `Add Transcript` button that will now show in the sidebar panel of the Podcast block (props [@nateconley](https://github.com/nateconley), [@peterwilsoncc](https://github.com/peterwilsoncc), [@sksaju](https://github.com/sksaju), [@kirtangajjar](https://github.com/kirtangajjar) via [#221](https://github.com/10up/simple-podcasting/pull/221)). From 81b413feb8ecaeb7d253a114a05309f25a9be265 Mon Sep 17 00:00:00 2001 From: Siddharth Thevaril <siddharth.thevaril@gmail.com> Date: Tue, 2 Apr 2024 15:26:37 +0530 Subject: [PATCH 24/25] update version --- package-lock.json | 4 ++-- package.json | 2 +- readme.txt | 2 +- simple-podcasting.php | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b570f6a4..dfea62bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@10up/simple-podcasting", - "version": "1.7.0", + "version": "1.8.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@10up/simple-podcasting", - "version": "1.7.0", + "version": "1.8.0", "license": "GPL-2.0-or-later", "dependencies": { "use-debounce": "^8.0.4" diff --git a/package.json b/package.json index d379b448..05fc01db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@10up/simple-podcasting", - "version": "1.7.0", + "version": "1.8.0", "description": "A simple podcasting solution for WordPress. ", "homepage": "https://github.com/10up/simple-podcasting", "bugs": { diff --git a/readme.txt b/readme.txt index f4dd1bb9..c517f3e8 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: simple podcasting, podcasting, podcast, apple podcasts, episo Requires at least: 5.7 Tested up to: 6.4 Requires PHP: 7.4 -Stable tag: 1.7.0 +Stable tag: 1.8.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html diff --git a/simple-podcasting.php b/simple-podcasting.php index 19346ab7..897a69d8 100644 --- a/simple-podcasting.php +++ b/simple-podcasting.php @@ -3,7 +3,7 @@ * Plugin Name: Simple Podcasting * Plugin URI: https://github.com/10up/simple-podcasting * Description: Easily set up multiple podcast feeds using built-in WordPress posts. Includes a podcast block for the new WordPress editor. - * Version: 1.7.0 + * Version: 1.8.0 * Requires PHP: 7.4 * Author: 10up * Author URI: http://10up.com/ @@ -63,7 +63,7 @@ function() { return; } -define( 'PODCASTING_VERSION', '1.7.0' ); +define( 'PODCASTING_VERSION', '1.8.0' ); define( 'PODCASTING_PATH', dirname( __FILE__ ) . '/' ); define( 'PODCASTING_URL', plugin_dir_url( __FILE__ ) ); define( 'PODCASTING_TAXONOMY_NAME', 'podcasting_podcasts' ); From 569920f44cbe6a335dbab903266907f898d0ddce Mon Sep 17 00:00:00 2001 From: Siddharth Thevaril <siddharth.thevaril@gmail.com> Date: Tue, 2 Apr 2024 16:34:01 +0530 Subject: [PATCH 25/25] update CHANGELOG.md readme.txt --- CHANGELOG.md | 19 +++++++++++-------- readme.txt | 19 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 824d06d9..c2038152 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,21 +4,24 @@ All notable changes to this project will be documented in this file, per [the Ke ## [Unreleased] - TBD -## [1.8.0] - 2024-03-13 +## [1.8.0] - 2024-04-03 ### Added -- "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). -- Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). -- `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). +- "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi) via [#266](https://github.com/10up/simple-podcasting/pull/266)). +- Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh) via [#273](https://github.com/10up/simple-podcasting/pull/273)). +- `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter) via [#279](https://github.com/10up/simple-podcasting/pull/279)). ### Fixed -- Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). -- Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). +- Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter) via [#279](https://github.com/10up/simple-podcasting/pull/279)). +- Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9) via [#277](https://github.com/10up/simple-podcasting/pull/277)). ### Changed -- Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). +- Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#281](https://github.com/10up/simple-podcasting/pull/281)). +- Removed `PULL_REQUEST_TEMPLATE.md` template (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#286](https://github.com/10up/simple-podcasting/pull/286)). +- Replaced [lee-dohm/no-response](https://github.com/lee-dohm/no-response) with [actions/stale](https://github.com/actions/stale) to help with closing no-response/stale issues (props [@jeffpaul](https://github.com/jeffpaul), [@dkotter](https://github.com/dkotter) via [#287](https://github.com/10up/simple-podcasting/pull/287)). +- Upgrade the download-artifact from v3 to v4 (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#285](https://github.com/10up/simple-podcasting/pull/285)). ### Security -- Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). +- Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9) via [#278](https://github.com/10up/simple-podcasting/pull/278)). ## [1.7.0] - 2024-01-16 ### Added diff --git a/readme.txt b/readme.txt index c517f3e8..b1d0f1d4 100644 --- a/readme.txt +++ b/readme.txt @@ -120,14 +120,17 @@ add_filter( 'simple_podcasting_feed_item', 'podcasting_feed_item_filter', 10, 3 == Changelog == -= 1.8.0 - 2024-03-13 = -* **Added:** "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi)) via [#266](https://github.com/10up/simple-podcasting/pull/266). -* **Added:** Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh)) via [#273](https://github.com/10up/simple-podcasting/pull/273). -* **Added:** `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). -* **Fixed:** Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter)) via [#279](https://github.com/10up/simple-podcasting/pull/279). -* **Fixed:** Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9)) via [#277](https://github.com/10up/simple-podcasting/pull/277). -* **Changed:** Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul)) via [#281](https://github.com/10up/simple-podcasting/pull/281). -* **Security:** Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9)) via [#278](https://github.com/10up/simple-podcasting/pull/278). += 1.8.0 - 2024-04-03 = +* **Added:** "Latest Podcast Episode" query block variation (props [#jeffpaul](https://github.com/jeffpaul), [@cadic](https://github.com/cadic), [@barneyjeffries](https://github.com/barneyjeffries), [@faisal-alvi](https://github.com/faisal-alvi) via [#266](https://github.com/10up/simple-podcasting/pull/266)). +* **Added:** Ability to add Unique Cover Art for Episodes (props [@jamesburgos](https://github.com/jamesburgos), [@jeffpaul](https://github.com/jeffpaul), [@zamanq](https://github.com/zamanq), [@iamdharmesh](https://github.com/iamdharmesh) via [#273](https://github.com/10up/simple-podcasting/pull/273)). +* **Added:** `simple_podcasting_feed_title` filter hook to modify feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter) via [#279](https://github.com/10up/simple-podcasting/pull/279)). +* **Fixed:** Incorrect feed title (props [@martinburch](https://github.com/martinburch), [@psorensen](https://github.com/psorensen), [@dkotter](https://github.com/dkotter) via [#279](https://github.com/10up/simple-podcasting/pull/279)). +* **Fixed:** Fatal error in WordPress 5.8 and earlier (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@Sidsector9](https://github.com/Sidsector9) via [#277](https://github.com/10up/simple-podcasting/pull/277)). +* **Changed:** Disabled auto sync pull requests with target branch (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#281](https://github.com/10up/simple-podcasting/pull/281)). +* **Changed:** Removed `PULL_REQUEST_TEMPLATE.md` template (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#286](https://github.com/10up/simple-podcasting/pull/286)). +* **Changed:** Replaced [lee-dohm/no-response](https://github.com/lee-dohm/no-response) with [actions/stale](https://github.com/actions/stale) to help with closing no-response/stale issues (props [@jeffpaul](https://github.com/jeffpaul), [@dkotter](https://github.com/dkotter) via [#287](https://github.com/10up/simple-podcasting/pull/287)). +* **Changed:** Upgrade the download-artifact from v3 to v4 (props [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#285](https://github.com/10up/simple-podcasting/pull/285)). +* **Security:** Bumps `ip` from `1.1.8` to `1.1.9` (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9) via [#278](https://github.com/10up/simple-podcasting/pull/278)). = 1.7.0 - 2024-01-16 = * **Added:** Ability to add a transcript to a podcast episode by utilizing a new Podcast Transcript block. This block is added by clicking the `Add Transcript` button that will now show in the sidebar panel of the Podcast block (props [@nateconley](https://github.com/nateconley), [@peterwilsoncc](https://github.com/peterwilsoncc), [@sksaju](https://github.com/sksaju), [@kirtangajjar](https://github.com/kirtangajjar) via [#221](https://github.com/10up/simple-podcasting/pull/221)).