问题:问题似乎是wp_check_filetype()
无法识别mp3
具有的文件GET
参数。
可能的解决方法:
据我所知,您有两种选择:
1) 用覆盖音频短代码wp_audio_shortcode_override
滤器
2) 或允许通过wp_audio_extensions
滤器
下面是如何实现后一个选项的示例:
/**
* Allow unrecognize audio sources hosted on \'bucketname.s3.amazonaws.com\'.
*
* @see http://wordpress.stackexchange.com/a/152352/26350
*/
add_filter( \'wp_audio_shortcode_override\',
function( $html, $atts )
{
if( \'bucketname.s3.amazonaws.com\' === parse_url( $atts[\'src\'], PHP_URL_HOST ) )
{
add_filter( \'wp_audio_extensions\', \'wpse_152316_wp_audio_extensions\' );
}
return $html;
}
, PHP_INT_MAX, 2 );
在哪里
function wpse_152316_wp_audio_extensions( $ext )
{
remove_filter( current_filter(), __FUNCTION__ );
$ext[] = \'\';
return $ext;
}
所以,为了解释这里发生了什么:
就在wp_get_audio_extensions()
呼叫,在wp_audio_shortcode()
函数,我们“劫持”了wp_audio_shortcode_override
钩子,以允许空的音频文件扩展名。原因是wp_check_filetype()
check为无法识别的文件扩展名返回空字符串。然后,我们确保仅当音频源位于bucketname.s3.amazonaws.com
.
我希望这有帮助。