滤器the_content
ond/或the_excerpt
并替换已经不是属性值的音频URL。
示例:
add_filter( \'the_content\', \'wpse_82336_audio_url_to_shortcode\', 1 );
add_filter( \'the_excerpt\', \'wpse_82336_audio_url_to_shortcode\', 1 );
function wpse_82336_audio_url_to_shortcode( $content )
{
# See http://en.wikipedia.org/wiki/Audio_file_format
# Adjust the list to your needs
$suffixes = array (
\'3gp\', \'aa3\', \'aac\', \'aiff\', \'ape\', \'at3\', \'au\', \'flac\', \'m4a\', \'m4b\',
\'m4p\', \'m4r\', \'m4v\', \'mpc\', \'mp3\', \'mp4\', \'mpp\', \'oga\', \'ogg\', \'oma\',
\'pcm\', \'tta\', \'wav\', \'wma\', \'wv\',
);
$formats = join( \'|\', $suffixes );
$regex = \'~
(([^"\\\'])|^) # start of string or attribute delimiter -> match 1
(https? # http or https
:// # separator
.+/ # domain plus /
.+ # file name at least one character
\\. # a dot
(\' . $formats . \') # file suffixes
) # complete URL -> match 3
(([^"\\\'])|$)? # end of string or attribute delimiter -> match 5
~imUx\'; # case insensitive, multi-line, ungreedy, commented
return preg_replace( $regex, \'\\1[audio src="\\3"]\\5\', $content );
}