Created
March 9, 2020 17:36
-
-
Save obenland/f0a24834bee5d59ea28464e762a26270 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function render_block( $attributes ) { | |
do_shortcode( '[playlist type="podcast"]'); | |
} | |
function podcast_playlist( $output, $attributes, $instance ) { | |
if ( 'podcast' !== $attributes['type'] ) { | |
return $output; | |
} | |
global $content_width; | |
$post = get_post(); | |
$attributes = shortcode_atts( | |
array( | |
'type' => 'audio', | |
'order' => 'ASC', | |
'orderby' => 'menu_order ID', | |
'id' => $post ? $post->ID : 0, | |
'include' => '', | |
'exclude' => '', | |
'style' => 'light', | |
'tracklist' => true, | |
'tracknumbers' => true, | |
'images' => true, | |
'artists' => true, | |
), | |
$attributes, | |
'playlist' | |
); | |
$attachments = [ | |
'https://d3ctxlq1ktw2nl.cloudfront.net/production/2020-1-24/52173267-44100-2-730ecc202597b.mp3', | |
]; | |
$safe_type = 'audio'; | |
$data = array( | |
'type' => 'audio', | |
// Don't pass strings to JSON, will be truthy in JS. | |
'tracklist' => true, | |
'tracknumbers' => true, | |
'images' => true, | |
'artists' => true, | |
'tracks' => [ | |
[ | |
'src' => 'https://d3ctxlq1ktw2nl.cloudfront.net/production/2020-1-24/52173267-44100-2-730ecc202597b.mp3', | |
'type' => 'audio/mp3', | |
'title' => 'test title', | |
'caption' => 'test caption', | |
'description' => 'test description', | |
'meta' => [], | |
] | |
] | |
); | |
$outer = 22; // Default padding and border of wrapper. | |
$default_width = 640; | |
$default_height = 360; | |
$theme_width = empty( $content_width ) ? $default_width : ( $content_width - $outer ); | |
$theme_height = empty( $content_width ) ? $default_height : round( ( $default_height * $theme_width ) / $default_width ); | |
if ( 1 === $instance ) { | |
/** | |
* Prints and enqueues playlist scripts, styles, and JavaScript templates. | |
* | |
* @since 3.9.0 | |
* | |
* @param string $type Type of playlist. Possible values are 'audio' or 'video'. | |
* @param string $style The 'theme' for the playlist. Core provides 'light' and 'dark'. | |
*/ | |
do_action( 'wp_playlist_scripts', $attributes['type'], $attributes['style'] ); | |
} | |
?> | |
<div class="wp-playlist wp-<?php echo $safe_type; ?>-playlist wp-playlist-<?php echo esc_attr( $attributes['style'] ); ?>"> | |
<div class="wp-playlist-current-item"></div> | |
<audio controls="controls" preload="none" width="<?php echo (int) $theme_width; ?>"></audio> | |
<div class="wp-playlist-next"></div> | |
<div class="wp-playlist-prev"></div> | |
<noscript> | |
<ol> | |
<?php | |
foreach ( $attachments as $att_id => $attachment ) : | |
printf( '<li>%s</li>', $attachment ); | |
endforeach; | |
?> | |
</ol> | |
</noscript> | |
<script type="application/json" class="wp-playlist-script"><?php echo wp_json_encode( $data ); ?></script> | |
</div> | |
<?php | |
return ob_get_clean(); | |
} | |
add_filter( 'post_playlist', 'podcast_playlist', 10, 3 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment