Intereting Posts
Нужен плагин WordPress для Google Analytics, Favicon, мета-ключевые слова и описание? WP-Automatic для запуска перехватов публикации WooCommerce – Завершить действие hook Как отправить данные на боковой панели? Добавить загрузку логотипа в настройку API При использовании номера в URL-адресе он перенаправляется на ту же страницу, но при использовании символа он перенаправляет на 404 Несколько настраиваемых полей для 'orderby' в 'WP_Query' Как добавить новую страницу меню / подменю в WPMVC? Тема window.open вызывает «Страница не найдена» Деконструировать сериализованный массив данных из wp_options Общение с плагинами с веб-сервера Как получить все должности в категории, которые были опубликованы между двумя датами? Используйте pre_get_posts для отображения результатов поиска по мета в определенном порядке Получить сообщение meta inline редактировать WordPress Добавление нескольких настраиваемых мета-полей в разные настраиваемые типы сообщений

Как получить идентификатор элемента в аудио-плейлисте?

Я использую wp_playlist_shortcode() для вывода списка воспроизведения аудио. Например:

 echo wp_playlist_shortcode( array( 'ids' => $track_ids ) ); 

Благодаря идее в ответе 142974 , я wp_underscore_playlist_templates() функцию wp_underscore_playlist_templates() и использую мою собственную версию prefix_wp_underscore_playlist_templates() поэтому я могу настроить вывод элементов списка воспроизведения. Например:

 add_action( 'wp_playlist_scripts', function() { remove_action( 'wp_footer', 'wp_underscore_playlist_templates', 0 ); add_action( 'wp_footer', 'prefix_wp_underscore_playlist_templates', 0 ); } ); 

На данный момент я просто wp_underscore_playlist_templates() содержимое wp_underscore_playlist_templates() в prefix_wp_underscore_playlist_templates() .

Внутри моей пользовательской функции prefix_wp_underscore_playlist_templates() объект data становится доступным, но я считаю, что это просто содержит «данные», относящиеся к треку, такие как data.meta.artist и data.content .

Мой вопрос

Как получить идентификатор сообщения трека, когда внутри prefix_wp_underscore_playlist_templates() ?

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

Подход №1 – как метаданные

Мы можем добавить attachment_id в метаданные для каждого элемента списка воспроизведения через фильтр wp_get_attachment_metadata , но сначала мы должны зарегистрировать его через фильтр wp_get_attachment_id3_keys .

Вот пример:

 // Add 'attachment_id' as an id3 meta key add_filter( 'wp_get_attachment_id3_keys', $callback_id3 = function( $fields ) { $fields['attachment_id'] = 'attachment_id'; return $fields; } ); // Add ?attachment_id=123 to the url add_filter( 'wp_get_attachment_metadata', $callback_metadata = function ( $data, $post_id ) { $data['attachment_id'] = (int) $post_id; return $data; }, 10, 2 ); // Output from playlist shortcode $output = wp_playlist_shortcode( $atts, $content ); // Remove our filter callback remove_filter( 'wp_get_attachment_url', $callback_metadata ); remove_filter( 'wp_get_attachment_id3_keys', $callback_id3 ); 

Подход №2 – как строка запроса

В качестве альтернативы мы можем добавить строку запроса ?attachment_id=123 в URL-адрес вложений через фильтр wp_get_attachment_url .

Вот пример:

 // Add our filter callback to add ?attachment_id=123 to the url add_filter( 'wp_get_attachment_url', $callback = function ( $url, $post_id ) { return add_query_arg( 'attachment_id', (int) $post_id, $url ); }, 10, 2 ); // Output from playlist shortcode $output = wp_playlist_shortcode( $atts, $content ); // Remove our filter callback remove_filter( 'wp_get_attachment_url', $callback ); 

Надеюсь, поможет!