web-dev-qa-db-fra.com

Utilisation de media-upload.php pour télécharger du mp3 via des champs personnalisés

J'essaie d'utiliser le dialogue de téléchargement de fichier Thickbox avec un champ personnalisé pour permettre à l'utilisateur de télécharger un fichier MP3. Ce que je veux faire, c'est saisir l'URL du mp3 chargé et le sauvegarder au format postmeta (sauvegarder les données quand j'ai ce n'est pas un problème, mais obtenir ce dont j'ai besoin, c'est!).

J'ai le code pour que cela fonctionne avec une image

 jQuery(function($){

var formfield = null;

$('#rps_upload_mp3').click(function() {
    $('html').addClass('Image');
    formfield = $('#rps_mp3_url').attr('name');
    tb_show('', 'media-upload.php?type=image&TB_iframe=true');
    return false;
});

window.original_send_to_editor = window.send_to_editor;
window.send_to_editor = function(html) {

    var fileurl;

    if( formfield = !null ) {

        fileurl = $('img', html).attr('src');
        $('#rps_mp3_url').val(fileurl);
        tb_remove();

        $('html').removeClass('Image');
        formfield = null;

    } else {

        window.original_send_to_editor(html);

    }

}

 });

Évidemment, la ligne qui lit fileurl = $('img', html).attr('src'); ne récupère que la src d’une image, pas un mp3, mais je ne peux pas savoir où le script récupère la source de cette image et je ne sais pas comment cibler le mp3 téléchargé.

Merci d'avance!

4
Richard Sweeney

Le fileurl devrait ressembler à ceci:

fileurl = $('a', html).attr('href');

C'est une solution assez simple. Je voudrais faire une validation sur ceci:

if(/\.mp3\b/.test(fileurl)){
    //Do something awesome
}else{
    alert('The file you selected is not an MP3.');
}

À votre santé!

1
Brian Fegter

Les URL de fichier sont renvoyées sous la forme d'une seule balise d'ancrage, par opposition aux images renvoyées sous la forme d'une ancre contenant une balise d'image.

Donc, pour référencer une URL de fichier dans un éditeur de fichier wordpress, vous utilisez:

$(html).attr('href');

Ensuite, vous pouvez utiliser la réponse de Brian Fegter pour vérifier le type de fichier.

0
Jake