Intereting Posts
Ищете хороший способ включить PHP-код в сообщениях, но используя специальную разметку include, а не прямой php-код Разрешить пользователям загружать флеш-ролики? add_theme_support ('title-tag') в конфликте с пользовательскими функциями заголовков Установите ссылку в дочерней теме style.css, чтобы перейти к #main Должен ли is_active_sidebar () всегда использоваться вокруг dynamic_sidebar ()? Категории медиа-библиотеки Как добавить поиск по автору в поиск по умолчанию WordPress по умолчанию? IIS 7 Переписать с родительскими категориями В чем разница между «тегом» и «категорией»? Как заменить изображение WordPress на видео? Медленный администратор – ждет и долго блокируется WP_Query о meta_key и его значении массива Vagrant скрипт для настройки всех общих комбинаций версий PHP / WordPress Мигрировали из Windows в Linux. Какие-либо массовые методы для фиксации чувствительности к регистру? Есть ли действие / фильтр, вызываемый при завершении WP_Query-> запроса и назначении сообщений

Создание аудио-плейлиста с внешними аудиофайлами?

В WordPress 3.9 есть новая функция, которая может создавать список воспроизведения с загруженными аудиофайлами. Я бы хотел использовать внешние аудиофайлы. Я использую два веб-хоста. Один для моего сайта и один для моих аудиофайлов.

Штрих-код для плейлистов с внешними аудио- или видеофайлами

Здесь я объясню, как вы можете реализовать идею 3 в моем другом ответе, где мы используем следующую структуру короткого кода:

[wpse_playlist type="" current="" style="" tracklist="" tracknumbers="" images="" artist=""] [wpse_trac src="" title="" type="" caption="" description="" image="" meta_artist="" meta_album="" meta_genre="" meta_length_formatted="" image_src="" image_width="" image_height="" thumb_src="" thumb_width="" thumb_height=""] [wpse_trac src="" title="" type="" caption="" description="" image="" meta_artist="" meta_album="" meta_genre="" meta_length_formatted="" image_src="" image_width="" image_height="" thumb_src="" thumb_width="" thumb_height=""] [/wpse_playlist] 

но это не включает полный список атрибутов, так как плагин все еще находится в разработке 😉

Пример 1:

Вы можете использовать, например:

 [wpse_playlist] [wpse_trac title="Ain't Misbehavin'" src="//sworg/images/core/3.9/AintMisbehavin.mp3"] [wpse_trac title="Buddy Bolden's Blues" src="//sworg/images/core/3.9/JellyRollMorton-BuddyBoldensBlues.mp3"] [/wpse_playlist] 

в вашем сообщении, и он будет отображаться следующим образом:

плейлист wpse

Пример 2:

Вот более обширный пример:

 [wpse_playlist type="audio" tracklist="true" tracknumbers="true" images="true" artist="true"] [wpse_trac title="Ain't Misbehavin'" src="//sworg/images/core/3.9/AintMisbehavin.mp3" type="audio/mpeg" caption="" description="" image="" meta_artist="Louis Armstrong and His Orchestra" meta_album="78 RPMs and Cylinder Recordings" meta_genre="" meta_length_formatted="3:21" image_src="//sworg/images/core/3.9/louis.jpg" image_width="308" image_height="240" thumb_src="//sworg/images/core/3.9/louis.jpg" thumb_width="308" thumb_height="240"] [wpse_trac title="Buddy Bolden's Blues" src="//sworg/images/core/3.9/JellyRollMorton-BuddyBoldensBlues.mp3" type="audio/mpeg" caption="" description="" image="" meta_artist="Jelly Roll Morten" meta_album="78 RPMs and Cylinder Recordings" meta_genre="Jazz" meta_length_formatted="2:09"] [/wpse_playlist] 

со следующим выходом:

расширенный плейлист wpse

Пример 3:

Вот версия ванили:

Версия для ванили

сгенерированный из короткого кода:

 [wpse_playlist type="audio" current="no" tracklist="yes" tracknumbers="no" images="no" artist="no"] [wpse_trac title="Davenport Blues" src="//sworg/images/core/3.9/DavenportBlues.mp3"] [wpse_trac title="Dixie Blues" src="//sworg/images/core/3.9/Louisiana_Five-Dixie_Blues-1919.mp3"] [/wpse_playlist] 

Пример 4:

Вот видео-плейлист:

видео-плейлист

из этого короткого кода:

 [wpse_playlist type="video"] [wpse_trac caption="Live widgets previews in WordPress 3.9" src="//sworg/images/core/3.9/widgets.mp4" image_src="/wp-content/uploads/2014/04/widgets_screen.png"] [wpse_trac caption="Another cool video showing how live widgets previews works in WordPress 3.9" src="//sworg/images/core/3.9/widgets.mp4" image_src="/wp-content/uploads/2014/04/widgets_screen2.png"] [/wpse_playlist] 

Код:

Вот первая версия версии одного плагина для файлов, но я постараюсь доработать его дальше на github и скоро опубликовать ссылку ( Update: https://github.com/birgire/wpse-playlist ):

 <?php /** * Plugin Name: WPSE Playlist shortcode for external files * Plugin URI: http://wordpress.stackexchange.com/q/141766/ * Version: 0.0.1 */ add_action( 'wp', 'wpse_playlist_init' ); function wpse_playlist_init() { $playlist = new WPSE_Playlist; $playlist->init(); } /** * Class WPSE_Playlist */ class WPSE_Playlist { protected $type = ''; protected $types = array( 'audio', 'video' ); protected $instance = 0; public function init() { add_shortcode( 'wpse_playlist', array( $this, 'playlist_shortcode' ) ); add_shortcode( 'wpse_trac', array( $this, 'trac_shortcode' ) ); } public function playlist_shortcode( $atts = array(), $content = '' ) { $this->instance++; $atts = shortcode_atts( array( 'type' => 'audio', 'style' => 'light', 'tracklist' => 'true', 'tracknumbers' => 'true', 'images' => 'true', 'artists' => 'true', 'current' => 'true', 'loop' => 'false', 'autoplay' => 'false', 'id' => '', 'width' => '', 'height' => '', ), $atts, 'wpse_playlist_shortcode' ); //---------- // Input //---------- $atts['id'] = esc_attr( $atts['id'] ); $atts['type'] = esc_attr( $atts['type'] ); $atts['style'] = esc_attr( $atts['style'] ); $atts['tracklist'] = filter_var( $atts['tracklist'], FILTER_VALIDATE_BOOLEAN ); $atts['tracknumbers'] = filter_var( $atts['tracknumbers'], FILTER_VALIDATE_BOOLEAN ); $atts['images'] = filter_var( $atts['images'], FILTER_VALIDATE_BOOLEAN ); $atts['autoplay'] = filter_var( $atts['current'], FILTER_VALIDATE_BOOLEAN ); // Audio specific: $atts['artists'] = filter_var( $atts['artists'], FILTER_VALIDATE_BOOLEAN ); $atts['current'] = filter_var( $atts['current'], FILTER_VALIDATE_BOOLEAN ); // Video specific: $atts['loop'] = filter_var( $atts['loop'], FILTER_VALIDATE_BOOLEAN ); // Nested shortcode support: $this->type = ( in_array( $atts['type'], $this->types, TRUE ) ) ? $atts['type'] : 'audio'; $content = substr( strip_tags( nl2br( do_shortcode( $content ) ) ), 0, -2 ); // Enqueue default scripts and styles for the playlist. ( 1 === $this->instance ) && do_action( 'wp_playlist_scripts', $atts['type'], $atts['style'] ); //---------- // Output //---------- $html = ''; $html .= sprintf( '<div class="wp-playlist wp-%s-playlist wp-playlist-%s">', $this->type, $atts['style'] ); // Current audio item: if( $atts['current'] && 'audio' === $this->type ) $html .= '<div class="wp-playlist-current-item"></div>'; // Video player: if( 'video' === $this->type ): $html .= sprintf( '<video controls="controls" preload="none" width="%s" height="%s"></video>', $atts['style'], $atts['width'], $atts['height'] ); // Audio player: else: $html .= sprintf( '<audio controls="controls" preload="metadata"></audio>', $atts['style'] ); endif; // Next/Previous: $html .= '<div class="wp-playlist-next"></div><div class="wp-playlist-prev"></div>'; // JSON $html .= sprintf( ' <script type="application/json">{ "type":"%s", "tracklist":%b, "tracknumbers":%b, "images":%b, "artists":%b, "tracks":[%s] }</script></div>', $atts['type'], $atts['tracklist'], $atts['tracknumbers'], $atts['images'], $atts['artists'], $content ); return $html; } public function trac_shortcode( $atts = array(), $content = '' ) { $atts = shortcode_atts( array( 'src' => '', 'type' => ( 'video' === $this->type ) ? 'video/mp4' : 'audio/mpeg', 'title' => '', 'caption' => '', 'description' => '', 'image_src' => sprintf( '%s/wp-includes/images/media/%s.png', get_site_url(), $this->type ), 'image_width' => '48', 'image_height' => '64', 'thumb_src' => sprintf( '%s/wp-includes/images/media/%s.png', get_site_url(), $this->type ), 'thumb_width' => '48', 'thumb_height' => '64', 'meta_artist' => '', 'meta_album' => '', 'meta_genre' => '', 'meta_length_formatted' => '', 'dimensions_original_width' => '300', 'dimensions_original_height' => '200', 'dimensions_resized_width' => '600', 'dimensions_resized_height' => '400', ), $atts, 'wpse_trac_shortcode' ); //---------- // Input //---------- $data['src'] = esc_url( $atts['src'] ); $data['title'] = sanitize_text_field( $atts['title'] ); $data['type'] = sanitize_text_field( $atts['type'] ); $data['caption'] = sanitize_text_field( $atts['caption'] ); $data['description'] = sanitize_text_field( $atts['description'] ); $data['image']['src'] = esc_url( $atts['image_src'] ); $data['image']['width'] = intval( $atts['image_width'] ); $data['image']['height'] = intval( $atts['image_height'] ); $data['thumb']['src'] = esc_url( $atts['thumb_src'] ); $data['thumb']['width'] = intval( $atts['thumb_width'] ); $data['thumb']['height'] = intval( $atts['thumb_height'] ); $data['meta']['length_formatted'] = sanitize_text_field( $atts['meta_length_formatted'] ); // Video related: if( 'video' === $this->type ) { $data['dimensions']['original']['width'] = sanitize_text_field( $atts['dimensions_original_width'] ); $data['dimensions']['original']['height'] = sanitize_text_field( $atts['dimensions_original_height'] ); $data['dimensions']['resized']['width'] = sanitize_text_field( $atts['dimensions_resized_width'] ); $data['dimensions']['resized']['height'] = sanitize_text_field( $atts['dimensions_resized_height'] ); // Audio related: } else { $data['meta']['artist'] = sanitize_text_field( $atts['meta_artist'] ); $data['meta']['album'] = sanitize_text_field( $atts['meta_album'] ); $data['meta']['genre'] = sanitize_text_field( $atts['meta_genre'] ); } //---------- // Output: //---------- return json_encode( $data ) . ','; } } // end class 

Счастливое слушание 😉

Когда вы создаете плейлист и добавляете его в свой контент, вы получаете короткий код, подобный этому:

 [playlist ids="2855,1296"] 

где идентификаторы относятся к аудио вложениям.

Плейлисты содержат много звуковых метаданных, поэтому таким образом невозможно включить внешние файлы.

Вот несколько непроверенных идей:

Идея 1:

Интересно, будет ли это работать для вас, чтобы загрузить файлы на ваш основной WordPress install на example.com , чтобы собрать метаданные и создать плейлисты, но затем послушать аудиофайлы со своего второго хоста, audio.example.com ?

Вы можете попробовать изменить URL-адреса аудиофайлов в вашем плейлисте, используя:

 // Add filter for playlists add_filter( 'post_playlist', function(){ add_filter( 'wp_get_attachment_url' ,'wpse_141766_wp_get_attachment_url' ); }); // Remove filter add_action( 'wp_playlist_scripts', function(){ remove_filter( 'wp_get_attachment_url' ,'wpse_141766_wp_get_attachment_url' ); }); 

где

 function wpse_141766_wp_get_attachment_url( $url ) { // Edit to your needs: return str_ireplace( 'example.com', 'audio.example.com', $url ); } 

Идея 2:

Вы можете создать список воспроизведения вручную.

Если вы проверите wp-admin/about.php?updated страницу wp-admin/about.php?updated В своей новой wp-admin/about.php?updated 3.9 , вы увидите, что она содержит рабочий список воспроизведения с внешними аудиофайлами. Вот список воспроизведения с двумя треками:

  <div class="wp-playlist wp-audio-playlist wp-playlist-light"> <div class="wp-playlist-current-item"></div> <audio controls="controls" preload="metadata"></audio> <div class="wp-playlist-next"></div> <div class="wp-playlist-prev"></div> <?php $audio_icon_js = esc_js( includes_url( 'images/media/audio.png' ) ); $wp_host = '//sworg/images/core/3.9/'; ?> <script type="application/json">{ "type":"audio", "tracklist":true, "tracknumbers":true, "images":true, "artists":true, "tracks":[{ "src":"<?php echo $wp_host ?>AintMisbehavin.mp3", "type":"audio\/mpeg","title":"Ain't Misbehavin'","caption":"","description":"", "meta":{ "artist":"Louis Armstrong & His Orchestra", "album":"78 RPMs & Cylinder Recordings", "genre":"Jazz", "length_formatted":"3:21" }, "image":{"src":"//sworg/images/core/3.9/louis.jpg","width":308,"height":240}, "thumb":{"src":"//sworg/images/core/3.9/louis.jpg","width":308,"height":240} }, { "src":"<?php echo $wp_host ?>JellyRollMorton-BuddyBoldensBlues.mp3", "type":"audio\/mpeg","title":"Buddy Bolden's Blues","caption":"","description":"", "meta":{ "artist":"Jelly Roll Morten", "album":"78 RPMs & Cylinder Recordings", "genre":"Jazz", "length_formatted":"2:09" }, "image":{"src":"<?php echo $audio_icon_js ?>","width":48,"height":64}, "thumb":{"src":"<?php echo $audio_icon_js ?>","width":48,"height":64} }] }</script> </div> 

где верхняя часть этой страницы содержит:

 wp_enqueue_style( 'wp-mediaelement' ); wp_enqueue_script( 'wp-playlist' ); add_action( 'admin_footer', 'wp_underscore_playlist_templates', 0 ); 

Но я думаю, вы можете просто использовать

 do_action( 'wp_playlist_scripts', 'audio', 'light' ); 

или

 do_action( 'wp_playlist_scripts', 'audio', 'dark' ); 

вместо.

Идея 3:

Вы можете попытаться создать свой собственный короткий список плейлистов:

 [myplaylist type="" tracklist="" tracknumbers="" images="" artist="" ] [mytrac src="" title="" type="" caption="" description="" image=""] [mymeta artist="" album="" genre="" length_formatted=""] [myimage src="" width="" height=""] [mythumb src="" width="" height=""] [/mytrac] [mytrac src="" title="" type="" caption="" description="" image=""] [mymeta artist="" album="" genre="" length_formatted=""] [myimage src="" width="" height=""] [mythumb src="" width="" height=""] [/mytrac] [/myplaylist] 

или

 [myplaylist type="" tracklist="" tracknumbers="" images="" artist="" ] [mytrac src="" title="" type="" caption="" description="" image="" meta_artist="" meta_album="" meta_genre="" meta_length_formatted="" image_src="" image_width="" image_height="" thumb_src="" thumb_width="" thumb_height=""] [mytrac src="" title="" type="" caption="" description="" image="" meta_artist="" meta_album="" meta_genre="" meta_length_formatted="" image_src="" image_width="" image_height="" thumb_src="" thumb_width="" thumb_height=""] [/myplaylist] 

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

 [myplaylist] [mytrac src="" title=""] [mytrac src="" title=""] [/myplaylist] 

или какая-то структура, которая вам подходит.