私はオーディオプレーヤーを持っていますが、プレーヤーを表示するのに次の構文を使います。
[audio src="http://somedomain.com/wp-content/uploads/2013/01/songtitle.mp3"]
問題は、URLをコピーして投稿に貼り付ける方法をユーザーに示すことは確実だが、どうやって.mp3
リンクのコンテンツを検索し、その前に[audio src="
を付けて最後に"]
を置くことができるかということです。それ?
the_content
on /または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 );
}