Получает HTML код плейлиста из аудио или видео файлов, для вывода в записи. Можно указать параметры вывода.
Эта функция лежит в основе обработки шорткода [playlist].
Список поддерживаемых шорткодов в WordPress: [audio], [caption], [embed], [gallery], [playlist], [video]
Возвращает
string. HTMl код плейлиста. Пустую строку если указанный тип не поддерживается.
Использование
wp_playlist_shortcode( $attr );
- $attr(массив) (обязательный)
Массив параметров вывода плейлиста. Поддерживает следующие параметры:
-
type(строка)
Тип выводимого плейлиста: audio или video.
По умолчанию: 'audio'
-
order(строка)
Направление сортировки элементов плейлиста: ASC или DESC.
По умолчанию: 'ASC'
-
orderby(строка)
Колонка или колонки таблицы wp_posts по которым нужно сортировать элементы плейлиста. Если указан параметр ids, то этот параметр по умолчанию меняется на post__in, что значит сортировать по порядку указанных ID.
Подробнее про возможные значения и вообще этот параметр, читайте в описании WP_Query.
По умолчанию: 'menu_order ID'
-
id(число)
ID записи, вложения которой будут собраны в плейлист. Если указан параметр ids, то этот параметр игнорируется.
По умолчанию: 0 (ID записи из глобальной переменной $post)
-
ids(массив/строка)
ID вложений, из которых нужно собрать плейлист. Перебивает параметр ID. Можно указать как строкой (ID через запятую), так и массивом. Подробнее смотрите параметр include из get_posts().
По умолчанию: ''
-
exclude(массив/строка)
Список ID вложений, которые нужно исключить из списка. Можно указать как строкой (ID через запятую), так и массивом.
По умолчанию: ''
-
style(строка)
Стили внешнего вида плейлиста: light или dark.
По умолчанию: 'light'
-
tracklist(логический)
Показывать или прятать плейлист.
По умолчанию: true
-
tracknumbers(логический)
Показывать или нет порядковый номер элемента плейлиста.
По умолчанию: true
-
images(логический)
Показывать или нет миниатюру элемента плейлиста: аудио или видео.
По умолчанию: true
- artists(логический)
Показывать или нет имя исполнителя элемента плейлиста.
По умолчанию: true
О шорткоде WordPress [playlist]
С версии 3.9 в WordPress поддерживается шорткод [playlist], который позволяет удобно выводить списки аудио или видео файлов, прикрепленных к записи. Вот различные варианты вызова такого шорткода:
Базовый вызов с параметрами по умолчанию. Создаст плейлист всех аудио файлов прикрепленных к записи:
[playlist]
Изменит стиль плейлиста на dark (темный):
[playlist style="dark"]
Изменит тип файлов с аудио на видео:
[playlist type="video"]
Укажем ID аудио файлов (вложений из медиатеки) из которых будет собран плейлист.
[playlist ids="123,456,789"]
Укажем что переданные ID это видео файлы и изменим стиль на dark (темный):
[playlist type="video" ids="123,456,789" style="dark"]
Примеры
#1 Вывод аудио плейлиста в шаблоне
Допустим нам нужно вывести плейлист после контента, в котором будут находится все аудиофайлы прикрепленные к записи. Другими словами, нужно сделать то, что делает шорткод [playlist].
echo wp_playlist_shortcode();
В результате получим подобный плейлист:
Это HTML код:
<div class="wp-playlist wp-audio-playlist wp-playlist-light">
<div class="wp-playlist-current-item">
<img src="http://example.com/wp-content/uploads/2016/05/Pixaliz-Hold-On-feat-Li0by-mp3-image-150x150.png" alt="">
<div class="wp-playlist-caption">
<span class="wp-playlist-item-meta wp-playlist-item-title">“Hold On (feat. Li0by)”</span>
<span class="wp-playlist-item-meta wp-playlist-item-album">Outside EP</span>
<span class="wp-playlist-item-meta wp-playlist-item-artist">Pixaliz</span>
</div>
</div>
<span class="mejs-offscreen">Audio Player</span>
<div id="mep_1" class="mejs-container svg mejs-audio" tabindex="0" role="application" aria-label="Audio Player" style="width: 481px; height: 30px;">
<div class="mejs-inner">
<div class="mejs-mediaelement">
<audio preload="none" width="638" style="visibility: hidden; width: 100%; height: 100%;" src="http://example.com/wp-content/uploads/2016/05/Pixaliz-Hold-On-feat.-Li0by.mp3"></audio>
</div>
<div class="mejs-layers">
<div class="mejs-poster mejs-layer" style="display: none; width: 100%; height: 100%;"></div>
</div>
<div class="mejs-controls">
<div class="mejs-button mejs-playpause-button mejs-play">
<button type="button" aria-controls="mep_1" title="Play" aria-label="Play"></button>
</div>
<div class="mejs-time mejs-currenttime-container" role="timer" aria-live="off"><span class="mejs-currenttime">00:00</span></div>
<div class="mejs-time-rail" style="width: 307px;"><span class="mejs-time-total mejs-time-slider" style="width: 297px;"><span class="mejs-time-buffering" style="display: none;"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float" style="display: none;"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span>
</span>
</div>
<div class="mejs-time mejs-duration-container"><span class="mejs-duration">00:00</span></div>
<div class="mejs-button mejs-volume-button mejs-mute">
<button type="button" aria-controls="mep_1" title="Mute" aria-label="Mute"></button>
</div><a href="javascript:void(0);" class="mejs-horizontal-volume-slider mejs-mute" aria-label="volumeSlider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="80" aria-valuetext="80%" role="slider" tabindex="0"><span class="mejs-offscreen">Use Up/Down Arrow keys to increase or decrease volume.</span><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current" style="width: 40px;"></div><div class="mejs-horizontal-volume-handle" style="left: 27px;"></div></a></div>
<div class="mejs-clear"></div>
</div>
</div>
<div class="wp-playlist-next"></div>
<div class="wp-playlist-prev"></div>
<noscript>
<ol><li><a href='http://example.com/wp-content/uploads/2016/05/Pixaliz-Hold-On-feat.-Li0by.mp3'>Hold On (feat. Li0by)</a></li><li><a href='http://example.com/wp-content/uploads/2016/05/Pixaliz-Nocturne.mp3'>Nocturne</a></li><li><a href='http://example.com/wp-content/uploads/2016/05/Pixaliz-Outside.mp3'>Outside</a></li></ol>
</noscript>
<script type="application/json" class="wp-playlist-script">{"type":"audio","tracklist":true,"tracknumbers":true,"images":true,"artists":true,"tracks":[{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Hold-On-feat.-Li0by.mp3","type":"audio\/mpeg","title":"Hold On (feat. Li0by)","caption":"","description":"\"Hold On (feat. Li0by)\" from Outside EP by Pixaliz. Released: 2016. Track 2. Genre: French Touch.","meta":{"artist":"Pixaliz","album":"Outside EP","genre":"French Touch","year":"2016","length_formatted":"3:10"},"image":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Hold-On-feat-Li0by-mp3-image.png","width":500,"height":500},"thumb":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Hold-On-feat-Li0by-mp3-image-150x150.png","width":150,"height":150}},{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Nocturne.mp3","type":"audio\/mpeg","title":"Nocturne","caption":"","description":"\"Nocturne\" from Outside EP by Pixaliz. Released: 2016. Track 3. Genre: French Touch.","meta":{"artist":"Pixaliz","album":"Outside EP","genre":"French Touch","year":"2016","length_formatted":"3:35"},"image":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Hold-On-feat-Li0by-mp3-image.png","width":500,"height":500},"thumb":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Hold-On-feat-Li0by-mp3-image-150x150.png","width":150,"height":150}},{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Outside.mp3","type":"audio\/mpeg","title":"Outside","caption":"","description":"\"Outside\" from Outside EP by Pixaliz. Released: 2016. Track 4. Genre: French Touch.","meta":{"artist":"Pixaliz","album":"Outside EP","genre":"French Touch","year":"2016","length_formatted":"4:15"},"image":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Outside-mp3-image.png","width":500,"height":500},"thumb":{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Pixaliz-Outside-mp3-image-150x150.png","width":150,"height":150}}]}</script>
<div class="wp-playlist-tracks">
<div class="wp-playlist-item wp-playlist-playing">
<a class="wp-playlist-caption" href="http://example.com/wp-content/uploads/2016/05/Pixaliz-Hold-On-feat.-Li0by.mp3">
1. <span class="wp-playlist-item-title">“Hold On (feat. Li0by)”</span> <span class="wp-playlist-item-artist"> — Pixaliz</span>
</a>
<div class="wp-playlist-item-length">3:10</div>
</div>
<div class="wp-playlist-item">
<a class="wp-playlist-caption" href="http://example.com/wp-content/uploads/2016/05/Pixaliz-Nocturne.mp3">
2. <span class="wp-playlist-item-title">“Nocturne”</span> <span class="wp-playlist-item-artist"> — Pixaliz</span>
</a>
<div class="wp-playlist-item-length">3:35</div>
</div>
<div class="wp-playlist-item">
<a class="wp-playlist-caption" href="http://example.com/wp-content/uploads/2016/05/Pixaliz-Outside.mp3">
3. <span class="wp-playlist-item-title">“Outside”</span> <span class="wp-playlist-item-artist"> — Pixaliz</span>
</a>
<div class="wp-playlist-item-length">4:15</div>
</div>
</div>
</div>
Так выглядит темная тема:
#2 Выведем плейлист указанных видео файлов
Допустим мы знаем ID добавленных в медиатеку видео файлов - это 54,132. И теперь, нам нужно вывести список этих видео в черном оформлении (с dark темой).
$attr = [
'type' => 'video',
'ids' => '54,132',
'style' => 'dark',
];
echo wp_playlist_shortcode( $attr );
В результате получим:
HTML код:
<!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<div class="wp-playlist wp-video-playlist wp-playlist-light">
<span class="mejs-offscreen">Video Player</span>
<div id="mep_0" class="mejs-container svg mejs-video" tabindex="0" role="application" aria-label="Video Player" style="width: 481px; height: 253px;">
<div class="mejs-inner">
<div class="mejs-mediaelement">
<div class="me-cannotplay" style="width: 638px; height: 336px;"><a href="http://example.com/wp-content/uploads/2016/05/Video_2016-05-20_154705.wmv"><span>Download File</span></a></div>
<video preload="none" width="638" height="336" src="http://example.com/wp-content/uploads/2016/05/Video_2016-05-20_154705.wmv" style="width: 100%; height: 100%; display: none;"></video>
</div>
<div class="mejs-layers"></div>
<div class="mejs-controls" style="display: none;"></div>
<div class="mejs-clear"></div>
</div>
</div>
<div class="wp-playlist-next"></div>
<div class="wp-playlist-prev"></div>
<noscript>
<ol><li><a href='http://example.com/wp-content/uploads/2016/05/Video_2016-05-20_154705.wmv'>Видео 1</a></li><li><a href='http://example.com/wp-content/uploads/2016/05/Video_2016-05-12_212534.wmv'>Видео 2</a></li></ol>
</noscript>
<script type="application/json" class="wp-playlist-script">{"type":"video","tracklist":true,"tracknumbers":true,"images":true,"artists":true,"tracks":[{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Video_2016-05-20_154705.wmv","type":"video\/x-ms-wmv","title":"\u0412\u0438\u0434\u0435\u043e 1","caption":"","description":"","meta":{"length_formatted":"2:08"},"dimensions":{"original":{"width":1904,"height":1004},"resized":{"width":638,"height":336}},"image":{"src":"http:\/\/example.com\/wp\/wp-includes\/images\/media\/video.png","width":48,"height":64},"thumb":{"src":"http:\/\/example.com\/wp\/wp-includes\/images\/media\/video.png","width":48,"height":64}},{"src":"http:\/\/example.com\/wp-content\/uploads\/2016\/05\/Video_2016-05-12_212534.wmv","type":"video\/x-ms-wmv","title":"\u0412\u0438\u0434\u0435\u043e 2","caption":"","description":"","meta":{"length_formatted":"2:24"},"dimensions":{"original":{"width":1356,"height":660},"resized":{"width":638,"height":311}},"image":{"src":"http:\/\/example.com\/wp\/wp-includes\/images\/media\/video.png","width":48,"height":64},"thumb":{"src":"http:\/\/example.com\/wp\/wp-includes\/images\/media\/video.png","width":48,"height":64}}]}</script>
<div class="wp-playlist-tracks">
<div class="wp-playlist-item wp-playlist-playing">
<a class="wp-playlist-caption" href="http://example.com/wp-content/uploads/2016/05/Video_2016-05-20_154705.wmv">
1. <span class="wp-playlist-item-title">“Видео 1”</span>
</a>
<div class="wp-playlist-item-length">2:08</div>
</div>
<div class="wp-playlist-item">
<a class="wp-playlist-caption" href="http://example.com/wp-content/uploads/2016/05/Video_2016-05-12_212534.wmv">
2. <span class="wp-playlist-item-title">“Видео 2”</span>
</a>
<div class="wp-playlist-item-length">2:24</div>
</div>
</div>
</div>
Так выглядит светлая тема:
#3 Хук post_playlist
Работу функции можно полностью переопределить через хук post_playlist. Точно также, как это делается с шорткодом галереи в примере функции gallery_shortcode()
add_filter( 'post_playlist', 'my_playlist_shortcode', 10, 3 );
function my_playlist_shortcode( $empty_str, $attr, $instance ){
// Проверяем что нам нужно, если подходит, то переопределяем всю функцию wp_playlist_shortcode
if( $attr['type'] !== 'video' ){
return '';
}
// тут пишем свой код вывода плейлиста для видео файлов
}