最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Extending the Audio Shortcode

programmeradmin1浏览0评论

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

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论