Intereting Posts

Замените аудио-ссылки на jplayer с помощью фильтра the_content

Я пытаюсь использовать:

add_filter( 'the_content', 'filter_function_name' ); 

Чтобы найти все теги привязки в моем сообщении, которые ссылаются на файл .mp3, а затем заменить их на экземпляр jplayer, который будет воспроизводить файл, вместо того, чтобы показывать ссылку на файл.

Итак, я пытаюсь получить все теги привязок, которые выводятся с помощью the_content, которые будут заменены экземплярами следующих html и js:

HTML:

  <div id="jquery_jplayer_#uniqueid" class="jp-jplayer"></div> <div id="jp_container_#uniqueid" class="jp-audio"> <div class="jp-type-single"> <div class="jp-gui jp-interface"> <ul class="jp-controls"> <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li> <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li> <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li> <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li> <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li> <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li> </ul> <div class="jp-progress"> <div class="jp-seek-bar"> <div class="jp-play-bar"></div> </div> </div> <div class="jp-volume-bar"> <div class="jp-volume-bar-value"></div> </div> <div class="jp-time-holder"> <div class="jp-current-time"></div> <div class="jp-duration"></div> <ul class="jp-toggles"> <li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li> <li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li> </ul> </div> </div> <div class="jp-title"> <ul> <li>Music Player</li> </ul> </div> <div class="jp-no-solution"> <span>Update Required</span> To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>. </div> </div> </div> 

Javascript:

 <script type="text/javascript"> $(document).ready(function(){ $("#jquery_jplayer_#uniqueid").jPlayer({ ready: function () { $(this).jPlayer("setMedia", { m4a: "#the_url_from_the_anchor_tag", }) //.jPlayer("play"); }, swfPath: "js/jplayer", supplied: "m4a, mp3, oga", wmode:"window", cssSelectorAncestor: '#jp_container_#uniqueid' }); }); </script> 

Любая помощь приветствуется. Благодарю.

Solutions Collecting From Web of "Замените аудио-ссылки на jplayer с помощью фильтра the_content"

Вам нужно добавить фильтр в the_content и изменить разметку. Это должно заменить разметку для тегов <a> имеющих URL-адреса, заканчивающиеся на .mp3 , которые вы упомянули специально в комментарии.

 function replace_audio_link_cb_105555($match) { if (!empty($match[1]) && '.mp3' == substr($match[1],-4)) { $your_long_block_of_markup = '<div id="jquery_jplayer_#uniqueid" class="jp-jplayer"></div> <div id="jp_container_#uniqueid" class="jp-audio">... and so on ...</div>'; $your_javascript = '<script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#jquery_jplayer_#uniqueid").jPlayer({ ready: function () { jQuery(this).jPlayer("setMedia", { m4a: "#the_url_from_the_anchor_tag", }) //.jPlayer("play"); }, swfPath: "js/jplayer", supplied: "m4a, mp3, oga", wmode:"window", cssSelectorAncestor: "'.$match[1].'" }); }); </script>'; $match[0] = $your_long_block_of_markup.$your_javascript; } return $match[0]; } function replace_audio_link_105555($content) { $pattern = '|<a.*?href="(.*)".*>?.*?(?:</a>)?|'; $content = preg_replace_callback($pattern,'replace_audio_link_cb_105555',$content); return $content; } add_filter('the_content','replace_audio_link_105555'); 

Если бы это был я, я бы разработал способ сделать этот javascript более гибким, чтобы я мог зарегистрировать его и поставить в очередь, а не печатать его независимо для каждого аудиофайла.

Я сделал это, чтобы найти все аудио, видео теги и mp3, ссылки m4v и превратить тему в jPlayer http://jsfiddle.net/onigetoc/vaot2auz/