我目前正在开发一个插件,使用文件上传器将文件上传到wordpress。用户可以保存文件列表,以便在主题的其他位置使用。一切都正常,除了我想删除文件的时候。
我可以使用媒体上传器删除文件,这没有问题。这些文件将在wordpress的后台删除。但是,当文件在媒体上载程序中删除时,我还希望将其从用户当前编辑的列表中删除,这样,当文件在“媒体环境”中不再存在时,就无法将其保存到我的自定义数据库表中。我知道从列表中删除它们需要哪些javascript,但我不知道如何从媒体上传程序中获取删除的文件。
下面是两种可能的解决方案,它们看起来是合乎逻辑的,但我还没有找到正确的方法。
Approach 1
function someFunction() {
(...)
file_frame.on(\'select\', handle_upload); //This works
file_frame.on(\'delete\', handle_delete_media); //perhaps something like this exists?
}
Approach 2 (不确定这是否是一种好方法,因为它需要选择文件)
function handle_upload() {
var files = file_frame.state().get(\'selection\').toJSON(); //This works
var files = file_frame.state().get(\'deleted\').toJSON(); //perhaps something like this exists?
(...)
}
任何帮助都将不胜感激。
EDIT
这是打开媒体上载程序的代码
function open_uploader(e)
{
e.preventDefault();
if(file_frame) {
file_frame.open();
return;
}
file_frame = wp.media.frames.file_frame = wp.media({
title: \'Select files for your List\',
multiple: true,
button: {
text: \'Insert into List\',
}
});
file_frame.on(\'select\', handle_upload);
//file_frame.on(\'delete\', handle_media_delete); I NEED SOMETHING LIKE THIS
file_frame.open();
}
这段代码是将所选文件添加到列表的脚本,它已经可以工作了。这基本上只是一些jQuery代码。
function handle_upload(e)
{
var files = file_frame.state().get(\'selection\').toJSON();
jQuery(files).each(function(index, attachment){
var url = attachment.url.toString();
var media_id = attachment.id.toString();
var title = attachment.title.toString();
var description = attachment.description.toString();
(...)
});
}