Thickboxファイルアップロードダイアログをカスタムフィールドで使用して、ユーザーがmp3をアップロードできるようにしています。私がやりたいことはアップロードされたmp3のURLをつかみそしてpostmetaとしてそれを保存することです(私がそれを得たときデータを保存することは問題ではありませんが、必要なものを手に入れることです!)。
これを画像で機能させるためのコードがあります。
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);
}
}
});
明らかにfileurl = $('img', html).attr('src');
という行はmp3ではなく画像のsrc
のみを取得しますが、スクリプトがどこからこの画像のソースを取得しているのかわからず、アップロードされたmp3をターゲットにする方法がわかりません。
前もって感謝します!
ファイルは次のようになります。
fileurl = $('a', html).attr('href');
それはかなり簡単な修正です。これを検証します。
if(/\.mp3\b/.test(fileurl)){
//Do something awesome
}else{
alert('The file you selected is not an MP3.');
}
乾杯!
画像タグを含むアンカーとして返される画像とは対照的に、ファイルのURLは単一のアンカータグとして返されます。
そのため、wordpressファイルアップローダでファイルのURLを参照するには、次のようにします。
$(html).attr('href');
その後、 Brian Fegterの応答 を使用してファイルの種類を確認できます。