Extending the Audio Shortcode

时间:2014-10-03 作者:charlenemasters

目前,音频快捷码只允许四个属性,src, loop, autoplaypreload. 然而,当你上传一个音频文件时,它附带了非常有用的元数据,如专辑的艺术、艺术家、年份等,如果它也能显示出来,那就太好了。我一直在寻找一种扩展音频短代码的方法,以便元数据也可以包含在短代码中。

到目前为止,我偶然发现shortcode_atts_{$shortcode} 它可以用来过滤现有的短代码,但显然只能过滤现有属性,不能添加新属性。顺便说一句,我并不想创建一个新的短代码,而是要添加或扩展现有的短代码,这样用户就不必使用新的短代码来获得这种效果。是否有人能做到这一点?我很感激你的指点。

2 个回复
SO网友:realloc

我会用过滤器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 );
似乎$audio不是所述的字符串,而是WP\\u Post类型的对象,因此可以使用$audio->ID来获取元值。

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 );

SO网友:Tim

我想跟进此事。出于某种原因,$音频变量为空。我使用$atts[“mp3”]值并搜索数据库以找到媒体ID,然后根据charlenemasters提供的答案获取元数据

结束

相关推荐

Return vs Echo Shortcode

好的,我创建了一个简短的代码,其中echo是一些输出;我发现的问题是,必须返回值而不是echo\'d。我在转换快捷码以返回日期时遇到问题。。我试过了,但它打破了我的短码。。如果此短代码正确返回代码而不是回显代码,那么它会是什么样子?// [service slug=\"foobar\"] function services_shortcode( $atts ) { // Attributes extract( shortcode_atts(