Как я могу перечислить URL-адреса всех аудиофайлов в моей медиа-галерее?

У меня есть музыкальный плеер в моей теме, который генерирует свой плейлист из javascript-файла, который выглядит так

var myPlaylist = [ { mp3:'track url goes here', title:'title here', artist:'artist', } { mp3:'track url goes here', title:'title here', artist:'artist', } etc... ]; 

Как я могу запросить библиотеку мультимедиа, чтобы она отражала URL-адрес трека, текст заголовка и, возможно, существующий звуковой параметр, такой как «описание» для значения артиста?

Я знаю достаточно о php, чтобы поместить их в нужные места, как только они будут запрошены, мне просто нужно знать, как их вытащить из базы данных wp!

Solutions Collecting From Web of "Как я могу перечислить URL-адреса всех аудиофайлов в моей медиа-галерее?"

Добро пожаловать в WPSE marctain!

Редактировать Есть некоторые критические замечания по использованию руководства, но ни один из комментаторов не смог отредактировать этот ответ на лучший, поэтому я сделаю это.

Да, использование guid – плохая идея в долгосрочной перспективе, я знал это, и я должен был это указать, я этого не сделал, это была ошибка. Извините, это был быстрый и грязный ответ.

В моем первоначальном ответе я бы использовал wp_get_attachment_url, чтобы получить правильный URL-адрес в любом случае. Это добавляет дополнительный запрос, но он безопасен в использовании.

 $args = array ( 'post_type' => 'attachment', 'post_mime_type' => 'audio', 'numberposts' => -1 ); $audiofiles = get_posts($args); foreach ($audiofiles as $file) { $url = wp_get_attachment_url($file->ID); echo $url; // url echo file->post_title; //title echo file->post_content; // description } 

Еще один шаг: используйте локализацию для обработки с php и доступа в js

Вот пример, который позволяет вам получить доступ и изменить свой трек-лист прямо из ваших php-файлов. Дополнительным преимуществом этого решения является то, что теперь вы можете изменять материал, используя функции jQuery.ajax 1) .

  function load_init_tracks() { $args = array ( 'post_type' => 'attachment', 'post_mime_type' => 'audio', 'numberposts' => -1 ); $audiofiles = get_posts($args); $result = array(); foreach ( $audiofiles as $file ) { $result['mp3'] = wp_get_attachment_url( $file->ID ); // url $result['title'] = $file->post_title //title $result['artist'] = $file->post_content // description } // $result now contains all tracks as multi dimensional array return $result; } function load_track_scripts() { // register your script, enqueue it and then add localize the result to access it inside your js file: wp_register_script( 'mp3tracks', get_stylesheet_directory().'js/your_js_filename.js', array( 'jquery' ), 0, true ); wp_enqueue_script( 'mp3tracks' ); wp_localize_script( 'mp3tracks', 'track_list_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ,'nonce' => wp_create_nonce( 'mp3_nonce_value' ) ,'action' => "mp3tracks" ,'tracks' => load_init_tracks() ); // Hook it to some ajax callback (for public and logged in users): add_action( 'wp_ajax_nopriv_mp3tracks', 'mp3tracks_cb' ); add_action( 'wp_ajax_nopriv_mp3tracks', 'mp3tracks_cb' ); } add_action( 'init', 'load_track_scripts' ); // Now call the function that processes the function mp3tracks_cb() { check_ajax_referer( 'mp3_nonce_value', 'nonce' ); // This is what the data you can process with the ajax response $data = $_POST; # @todo validate your input: esc_attr(), strip_tags(), etc. $response = json_encode( array( 'tracks' => $data ) ); header( "Content-Type: application/json" ); echo $response; exit; } 

Затем вы можете получить доступ к вашему результату внутри вашего файла javascript из track_list_object.data . Этот ↑ также позволяет обрабатывать материал через ajax внутри функции.

Просто обработайте свои вещи во время чего-то вроде:

 // Inside theme_root/js/your_js_filename.js jQuery( document ).on( "pageinit" ,function( e, data ) { // do stuff... take a look at your "console"-tab in the chrome/IE dev bar or with FF Firebug console.log( track_list_object ); } ); 

Заметки

1) Вам не нужно это делать, но это легко и позволяет использовать ajax в случае, если вы хотите изменить свои плейлисты «на лету».