不用audio-player插件也播放mp3
2010 四月 17
添加wp短代码支持多种媒体文件的播放
支持mp3,wma,wav,mid,rm,rmvb,flv,swf,avi,mpg,mpeg,mov等格式 ,支持酷6、土豆、优酷视频引用。
注:原创文章,转载请务必注明出处。
方法很简单啦,三步就搞定了。
0×01:
将player.swf上传到当前所用主题的当前所用主题目录下的swf目录下面。(swf目录须自己建立)
0×02:
将以下代码加入header:
相关文件(js和swf)下载:
swf_player.zip 下载 (12.9 KB, 276 次)
0×03:
再将以下代码加入当前所用主题的functions.php文件的php标签内:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | //媒体文件播放支持 function parseaudio($url, $width = 400, $autostart = 0) { $ext = strtolower(substr(strrchr($url, '.'), 1, 5)); switch($ext) { case 'mp3': $auto=$autostart?'yes':'no'; return '<embed src="'.get_bloginfo('template_directory').'/swf/player.swf?soundFile='.$url.'&autostart='.$auto.'&animation=yes&encode=no&initialvolume=80&remaining=yes&noinfo=no&buffer=5&checkpolicy=no&rtl=no&bg=E5E5E5&text=333333&leftbg=CCCCCC&lefticon=333333&volslider=666666&voltrack=FFFFFF&rightbg=B4B4B4&rightbghover=999999&righticon=333333&righticonhover=FFFFFF&track=FFFFFF&loader=009900&border=CCCCCC&tracker=DDDDDD&skip=666666" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" width="290" height="30">'; case 'wma': case 'mid': case 'wav': return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="'.$width.'" height="64"><param name="invokeURLs" value="0"><param name="autostart" value="'.$autostart.'" /><param name="url" value="'.$url.'" /><embed src="'.$url.'" autostart="'.$autostart.'" type="application/x-mplayer2" width="'.$width.'" height="64"></embed></object>'; case 'ra': case 'rm': case 'ram': $mediaid = 'media_'.random(3); return '<object classid="clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" width="'.$width.'" height="32"><param name="autostart" value="'.$autostart.'" /><param name="src" value="'.$url.'" /><param name="controls" value="controlpanel" /><param name="console" value="'.$mediaid.'_" /><embed src="'.$url.'" type="audio/x-pn-realaudio-plugin" controls="ControlPanel" console="'.$mediaid.'_" width="'.$width.'" height="32"></embed></object>'; } } function parseflv($url, $width, $height) { $lowerurl = strtolower($url); $flv = ''; if($lowerurl != str_replace(array('player.youku.com/player.php/sid/','tudou.com/v/','player.ku6.com/refer/'), '', $lowerurl)) { $flv = $url; } elseif(strpos($lowerurl, 'v.youku.com/v_show/') !== FALSE) { if(preg_match("/http:\/\/v.youku.com\/v_show\/id_([^\/]+)(.html|)/i", $url, $matches)) { $flv = 'http://player.youku.com/player.php/sid/'.$matches[1].'/v.swf'; } } elseif(strpos($lowerurl, 'tudou.com/programs/view/') !== FALSE) { if(preg_match("/http:\/\/(www.)?tudou.com\/programs\/view\/([^\/]+)/i", $url, $matches)) { $flv = 'http://www.tudou.com/v/'.$matches[2]; } } elseif(strpos($lowerurl, 'v.ku6.com/show/') !== FALSE) { if(preg_match("/http:\/\/v.ku6.com\/show\/([^\/]+).html/i", $url, $matches)) { $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf'; } } elseif(strpos($lowerurl, 'v.ku6.com/special/show_') !== FALSE) { if(preg_match("/http:\/\/v.ku6.com\/special\/show_\d+\/([^\/]+).html/i", $url, $matches)) { $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf'; } } if($flv) { return '<script type="text/javascript" reload="1">document.write(AC_FL_RunContent(\'width\', \''.$width.'\', \'height\', \''.$height.'\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \''.$flv.'\', \'quality\', \'high\', \'bgcolor\', \'#ffffff\', \'wmode\', \'transparent\', \'allowfullscreen\', \'true\'));</script>'; } else { return FALSE; } } function parsemedia($atts, $content=null) { extract(shortcode_atts(array('type'=>'swf',"width"=>640,'height'=>400,'autostart'=>0),$atts)); $width = intval($width) > 800 ? 800 : intval($width); $height = intval($height) > 600 ? 600 : intval($height); if($flv = parseflv($content, $width, $height)) { return $flv; } $url = str_replace(array('<', '>'), '', str_replace('\\"', '\"', $content)); switch($type) { case 'mp3': case 'wma': case 'ra': case 'ram': case 'wav': case 'mid': return parseaudio($url, $width, $autostart); case 'rm': case 'rmvb': case 'rtsp': $mediaid = 'media_'.random(3); return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="'.$width.'" height="'.$height.'"><param name="autostart" value="'.$autostart.'" /><param name="src" value="'.$url.'" /><param name="controls" value="imagewindow" /><param name="console" value="'.$mediaid.'_" /><embed src="'.$url.'" type="audio/x-pn-realaudio-plugin" controls="imagewindow" console="'.$mediaid.'_" width="'.$width.'" height="'.$height.'"></embed></object><br /><object classid="clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" width="'.$width.'" height="32"><param name="src" value="'.$url.'" /><param name="controls" value="controlpanel" /><param name="console" value="'.$mediaid.'_" /><embed src="'.$url.'" type="audio/x-pn-realaudio-plugin" controls="controlpanel" console="'.$mediaid.'_" width="'.$width.'" height="32"'.($autostart ? ' autostart="true"' : '').'></embed></object>'; case 'flv': return '<script type="text/javascript" reload="1">document.write(AC_FL_RunContent(\'width\', \''.$width.'\', \'height\', \''.$height.'\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'images/common/flvplayer.swf\', \'flashvars\', \'file='.rawurlencode($url).'\', \'quality\', \'high\', \'wmode\', \'transparent\', \'allowfullscreen\', \'true\'));</script>'; case 'swf': return '<script type="text/javascript" reload="1">document.write(AC_FL_RunContent(\'width\', \''.$width.'\', \'height\', \''.$height.'\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \''.$url.'\', \'quality\', \'high\', \'bgcolor\', \'#ffffff\', \'wmode\', \'transparent\', \'allowfullscreen\', \'true\'));</script>'; case 'asf': case 'asx': case 'wmv': case 'mms': case 'avi': case 'mpg': case 'mpeg': return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="'.$width.'" height="'.$height.'"><param name="invokeURLs" value="0"><param name="autostart" value="'.$autostart.'" /><param name="url" value="'.$url.'" /><embed src="'.$url.'" autostart="'.$autostart.'" type="application/x-mplayer2" width="'.$width.'" height="'.$height.'"></embed></object>'; case 'mov': return '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="'.$width.'" height="'.$height.'"><param name="autostart" value="'.($autostart ? '' : 'false').'" /><param name="src" value="'.$url.'" /><embed src="'.$url.'" autostart="'.($autostart ? 'true' : 'false').'" type="video/quicktime" controller="true" width="'.$width.'" height="'.$height.'"></embed></object>'; default: return '<a href="'.$url.'" target="_blank">'.$url.'</a>'; } return; } function parsemp3($atts, $content=null) { return parsemedia(array('type'=>'mp3',"width"=>640,'height'=>400,'autostart'=>0),$content); } add_shortcode('media','parsemedia'); add_shortcode('audio','parsemp3'); |
哈哈,不单可以播放音乐,连土豆,优酷等网站的视频都可以播放呢。
测试一下看:
1 | [media width=500 height=400]http://www.tudou.com/v/h_Q907I1PIU[/media] |
使用方法:
1 2 | [audio]mp3文件URL地址[/audio] [media type=文件类型 width=宽 height=高]URL地址[/media] |
音乐播放示例:
http://www.ihacklog.com/memory/music/xianjian-music.html
效果图:
扩展阅读:
这里也有两位童鞋也写了类似文章
http://immmmm.com/add-shortcodes-wordpress-theme.html
http://www.hzlzh.com/wordpress-music-flash-player/
20 Responses
Post a comment


![Discuz!7.0实现PHP代码高亮[原创]](http://static.ihacklog.com/wp-files/2009/04/editor-21x150.gif)








哈哈,过来求助哈。
更新到3.3后,后台编辑框的按钮全部没了,求解哈。。
谢谢。这里怎么回复不了。
试了,mp3可以正常播放,但视频不能
这个我测试过的,你可以看上面的视频,播放是没有问题的。
视频的type=文件类型填什么
mp3,wma,wav,mid,rm,rmvb,flv,swf,avi,mpg,mpeg,mov 之一
不知道楼主这段代码在functions.php的什么地方插入·试了下不行······方便的话可以告诉我下不
今天试着制作成功啦
好东西啊,可不可以修改成跟以前插件的代码兼容哦。 不然的话 去掉插件,以前的就全部播放不了哦。以前的调用代码是[audio:MP3地址]
@SKYOY, 嗯 ,我原来用的也是audio player这个插件,不过我觉得在phpmyadmin更新一下SQL更方便:
2
UPDATE wp_posts SET post_content=REPLACE(post_content,'.mp3]','.mp3[/audio]');
@荒野无灯,
太谢谢了 终于又可以少一个插件了。 曾以为最不可能删除的插件也可以去掉了 哈哈
@荒野无灯,
额 我忘记一个东西了。。我以前好[audio:MP3地址|titles=歌曲名称|loop=yes] 我像这样加了,会不会影响到播放呢?
@SKYOY, 呃,这个有点麻烦了。我对正则不熟悉。如果没有加其它参数,也可以不更新数据库,直接在functions.php里面加个 filter:
2
3
4
5
6
7
{
$pattern = "/\[audio:(([^]]+))\]/i";
$content = preg_replace( $pattern,"[audio]$1[/audio]" , $content);
return $content;
}
add_filter('the_content','audio_player',99);
厉害了,用了BBS的标签代码了~
用这种方法有什么注意的地方吗?例如WP升级或者对主题的兼容性?
好办法,同样收下!
这个主题很稀饭
不用误点了……
不客气了,收下咯,HOHO
@万戈, 呵呵, 我又少了一个插件audio-player。