Extending the Audio Shortcode

At the moment, the audio shortcode only allows four attributes, src, loop, autoplay and preload. When you upload an audi

At the moment, the audio shortcode only allows four attributes, src, loop, autoplay and preload. When you upload an audio file however, it comes with pretty useful meta data such as the album art, artist, year and so on which would be great if it could be displayed as well. I've been looking for a way to extend the audio shortcode so that the meta data can be included in the shortcode as well.

So far I have stumbled across shortcode_atts_{$shortcode} which can be used to filter existing shortcodes, but apparently one can only filter existing attributes, not add new ones. I'm not looking to create a new shortcode btw, but add to or extend the existing one, so a user doesn't have to use a new shortcode to get this effect. Is there anyway one can achieve this? I'm grateful for any pointers.

At the moment, the audio shortcode only allows four attributes, src, loop, autoplay and preload. When you upload an audio file however, it comes with pretty useful meta data such as the album art, artist, year and so on which would be great if it could be displayed as well. I've been looking for a way to extend the audio shortcode so that the meta data can be included in the shortcode as well.

So far I have stumbled across shortcode_atts_{$shortcode} which can be used to filter existing shortcodes, but apparently one can only filter existing attributes, not add new ones. I'm not looking to create a new shortcode btw, but add to or extend the existing one, so a user doesn't have to use a new shortcode to get this effect. Is there anyway one can achieve this? I'm grateful for any pointers.

Share Improve this question edited Oct 3, 2014 at 9:01 kath asked Oct 3, 2014 at 8:44 kathkath 6312 gold badges8 silver badges21 bronze badges 2
  • 1 A simple alternate is to use the playlist shortcode instead (ie use the "Create Audio Playlist" option when inserting media). The audio shortcode seems to be designed to be a simple cross-platform dropin via mediaelement for the standard HTML5 audio element with standard attributes. – bonger Commented Oct 3, 2014 at 10:47
  • Hmm, even though this isn't what I had in mind, this is certainly a headache-free workaround. Although one would think that making a one track playlist kind of defeats the purpose of a playlist. Thanks for the suggestion, though! I'm still keen on finding out if there are any ideas about the actual audio shortcode. – kath Commented Oct 3, 2014 at 13:34
Add a comment  | 

2 Answers 2

Reset to default 1

I would use the filter wp_audio_shortcode:

/**
 * Filter the audio shortcode output.
 *
 * @since 3.6.0
 *
 * @param string $html    Audio shortcode HTML output.
 * @param array  $atts    Array of audio shortcode attributes.
 * @param string $audio   Audio file.
 * @param int    $post_id Post ID.
 * @param string $library Media library used for the audio shortcode.
 */
return apply_filters( 'wp_audio_shortcode', $html, $atts, $audio, $post_id, $library );

It seems that $audio is not a string as stated but an object of type WP_Post, so you could use $audio->ID to get the meta values.

function wpse_163324_audio_filter( $html, $atts, $audio, $post_id, $library ) {
    // Use something like
    // $meta_values = get_post_meta( $audio->ID, 'your_audio_metas', true );
    // to get the meta values and add them to the var $html like
    // $html .= '<div>your_content</div>';
    return $html;
}
add_filter( 'wp_audio_shortcode', 'wpse_163324_audio_filter', 10, 5 );

I wanted to follow-up on this. For some reason, the $audio variable was coming up blank. I used the $atts["mp3"] value and searched the DB to find the media ID, which I then used to grab meta data based on the answer provided by charlenemasters

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745490046a4629948.html

相关推荐

  • Extending the Audio Shortcode

    At the moment, the audio shortcode only allows four attributes, src, loop, autoplay and preload. When you upload an audi

    3小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信