<?php /** * Shortcode - PodcastEpisode * * @since 3.0.17 * @package RankMathPro * @subpackage RankMathPro\Schema */ use RankMath\Helpers\WordPress; defined( 'ABSPATH' ) || exit; if ( empty( $schema['associatedMedia'] ) || empty( $schema['associatedMedia']['contentUrl'] ) ) { return; } $post_title = get_the_title( $post->ID ); $episode_title = $schema['name']; if ( $schema['name'] === $post_title && $post->ID === get_the_ID() ) { $episode_title = ''; } /** * Filter: 'rank_math/schema/podcast_episode_title' - Allow changing the title of the podcast episode. Pass false to disable. * * @var string $post_title The title of the podcast episode. * * @param WP_Post $post The post object. * @param array $schema The schema array. */ $episode_title = apply_filters( 'rank_math/schema/podcast_episode_title', $episode_title, $post, $schema ); $season = ! empty( $schema['partOfSeason'] ) ? $schema['partOfSeason'] : []; $time_required = []; if ( isset( $schema['timeRequired'] ) && WordPress::get_formatted_duration( $schema['timeRequired'] ) ) { $duration = new \DateInterval( $schema['timeRequired'] ); $time_required[] = ! empty( $duration->h ) ? sprintf( esc_html__( '%d Hour', 'rank-math-pro' ), $duration->h ) : ''; $time_required[] = ! empty( $duration->i ) ? sprintf( esc_html__( '%d Min', 'rank-math-pro' ), $duration->i ) : ''; $time_required[] = ! empty( $duration->s ) ?sprintf( esc_html__( '%d Sec', 'rank-math-pro' ), $duration->s ) : ''; $time_required = array_filter( $time_required ); } ob_start(); ?> <!-- wp:columns --> <div class="wp-block-columns" style="gap: 2em;"> <!-- wp:column --> <?php if ( ! empty( $schema['thumbnailUrl'] ) ) { $image_id = attachment_url_to_postid( $schema['thumbnailUrl'] ); $img = '<img src="' . esc_url( $schema['thumbnailUrl'] ) . '" />'; if ( $image_id ) { $img = wp_get_attachment_image( $image_id, 'medium', false, [ 'class' => 'wp-image-' . $image_id ] ); } ?> <div class="wp-block-column" style="flex: 0 0 25%;"> <!-- wp:image --> <figure class="wp-block-image size-medium is-resized"> <?php echo wp_kses_post( $img ); ?> </figure> <!-- /wp:image --> </div> <!-- /wp:column --> <?php } ?> <!-- wp:column --> <div class="wp-block-column"> <!-- wp:paragraph --> <p> <?php if ( ! empty( $schema['datePublished'] ) ) { ?> <span class="rank-math-podcast-date"> <?php echo esc_html( date( "j F", strtotime( $schema['datePublished'] ) ) ); ?> </span> · <?php } ?> <span> <?php if ( ! empty( $season['seasonNumber'] ) ) { ?> <?php echo esc_html__( 'Season', 'rank-math-pro' ); ?> <?php echo esc_html( $season['seasonNumber'] ); ?> <?php if ( ! empty( $season['name'] ) ) { ?> : <?php if ( ! empty( $season['url'] ) ) { ?> <a href="<?php echo esc_url( $season['url'] ); ?>"><?php echo esc_html( $season['name'] ); ?></a> <?php } else { ?> <?php echo esc_html( $season['name'] ); ?> <?php } ?> <?php } ?> · <?php } ?> <?php if ( ! empty( $schema['episodeNumber'] ) ) { ?> <?php echo esc_html__( 'Episode', 'rank-math-pro' ); ?> <?php echo esc_html( $schema['episodeNumber'] ); ?> <?php } ?> </span> </p> <!-- /wp:paragraph --> <?php if ( $episode_title ) { ?> <!-- wp:heading --> <h2> <?php echo esc_html( $episode_title ); ?> </h2> <!-- /wp:heading --> <?php } ?> <!-- wp:paragraph --> <p> <?php if ( ! empty( $time_required ) ) { ?> <span> <?php echo implode( ', ', $time_required ); ?> </span> · <?php } ?> <?php if ( ! empty( $schema['author'] ) ) { ?> <?php echo esc_html__( 'By', 'rank-math-pro' ); ?> <?php echo esc_html( $schema['author']['name'] ); ?> <?php } ?> </p> <!-- /wp:paragraph --> </div> <!-- /wp:column --> </div> <!-- /wp:columns --> <!-- wp:audio --> <figure class="wp-block-audio"> <audio controls src="<?php echo esc_url( $schema['associatedMedia']['contentUrl'] ); ?>"></audio> </figure> <!-- /wp:audio --> <?php if ( ! empty( $schema['description'] ) ) { ?> <!-- wp:paragraph --> <p><?php echo esc_html( $schema['description'] ); ?></p> <!-- /wp:paragraph --> <?php } ?> <?php echo do_blocks( ob_get_clean() );