как получить отдельные песни из списка воспроизведения аудио WordPress?

Я пытаюсь получить название песни и URL из плейлиста, который создан. Плейлист генерируется динамически при создании сообщения. Мне нужно будет просмотреть эти посты и получить плейлист, который я хочу разделить, отобразить имя, продолжительность и т. Д.

Я искал, но все, что я могу найти, это плагины для этих плейлистов.

Я хочу разделить аудиофайлы по списку воспроизведения сообщения и отображать только названия песен в какой-то части моего сайта.

Я могу отобразить один аудио файл как

$music_file = get_template_directory_uri() . "/sounds/music.mp3";
echo do_shortcode('');

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

Обновить

Например, я могу получить отдельные изображения из галереи, используя $gallery = get_post_gallery_images( $post ), Есть ли функция, которая может сделать то же самое для аудио списка воспроизведения.

Плейлист создан из медиа загрузки в редакторе

введите описание изображения здесь

3

Решение

Хотя ваш вопрос не совсем понятен, но этот код поможет вам найти каждое аудио имя / 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('');
}
2

Другие решения

В исходном коде для 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() и извлекать больше, так что вы можете настроить вещи так, как вам нравится.

0

Вы можете просто перебрать все 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
0
По вопросам рекламы [email protected]