Я пытаюсь получить название песни и URL из плейлиста, который создан. Плейлист генерируется динамически при создании сообщения. Мне нужно будет просмотреть эти посты и получить плейлист, который я хочу разделить, отобразить имя, продолжительность и т. Д.
Я искал, но все, что я могу найти, это плагины для этих плейлистов.
Я хочу разделить аудиофайлы по списку воспроизведения сообщения и отображать только названия песен в какой-то части моего сайта.
Я могу отобразить один аудио файл как
$music_file = get_template_directory_uri() . "/sounds/music.mp3";
echo do_shortcode('');
но я хочу получить все аудиофайлы из списка воспроизведения, просмотреть их по отдельности и создать собственное отображение списка воспроизведения.
Обновить
Например, я могу получить отдельные изображения из галереи, используя $gallery = get_post_gallery_images( $post )
, Есть ли функция, которая может сделать то же самое для аудио списка воспроизведения.
Плейлист создан из медиа загрузки в редакторе
Хотя ваш вопрос не совсем понятен, но этот код поможет вам найти каждое аудио имя / URL в вашем плейлисте:
// your playlist shortcode
$playlist_shortcode = '';
// Find registered tag names in your $playlist_shortcode.
preg_match('/' . get_shortcode_regex() . '/', $playlist_shortcode, $match );
// Parse playlist shortcode attributes
$playlist_attr = shortcode_parse_atts($match[3]);
// Retrieve audio ids
$audio_id = explode(',',$playlist_attr['ids']);
foreach($audio_id as $id ){
// Single audio title
echo get_the_title($id);
echo do_shortcode('');
}
В исходном коде для wp_playlist_shortcode()
Вы найдете необходимый запрос, который можно извлечь и использовать для создания собственного запроса, следующим образом.
<?php
$playlist_attachments = get_children( [
'post_status' => 'inherit',
'post_parent' => get_the_ID(),
'post_type' => 'attachment', // Attachment post type.
'post_mime_type' => 'audio', // Audio file attachments.
'orderby' => 'menu_order ID', // Playlist order.
'order' => 'ASC', // Ascending order.
] );
foreach ( $playlist_attachments as $id => $attachment ) {
echo wp_get_attachment_link( $id ) . "\n";
}
При этом у вас есть идентификатор вложения и объект для каждого из аудиофайлов в списке воспроизведения. Так что вы можете стать более креативным, если хотите, и вместо того, чтобы звонить wp_get_attachment_link()
, рассмотреть возможность использования wp_get_attachment_url()
. Вам также может быть полезно просмотреть источник wp_playlist_shortcode()
и извлекать больше, так что вы можете настроить вещи так, как вам нравится.
Вы можете просто перебрать все post_type
вложения, где post_mime_type
является аудио.
Смотрите страницу документации WordPress для get_posts()
чтобы увидеть, какие опции вы можете передать get_posts()
функция.
// Specify options here
$args = array (
'post_type' => 'attachment',
'post_mime_type' => 'audio',
'numberposts' => -1
);
// This is now an array with all audio files
$audiofiles = get_posts($args);
foreach ($audiofiles as $file)
{
// Do what ever you want with it here ...
// Eg.
$url = wp_get_attachment_url($file->ID);
echo $url; // url
echo file->post_title; //title
echo file->post_content; // description
}
Если вы хотите получить только аудио файлы, основанные на текущем сообщении. Затем добавьте post_parent
к $args
массив. Например.
'post_parent' => $post->ID // Which is the current post ID