Множественный выбор медиаменеджера


Я создавал плагин, и его часть должна была добавлять файлы в пользовательские сообщения. Мне удалось запустить скрипт, но после нескольких изменений, чтобы лучше выглядеть и функционировать, он позволяет добавлять только один файл, чем никакой другой. Вы можете мне помочь, пожалуйста?

jQuery(document).ready(function($){
var custom_uploader;
$('#songbook_addfile_button').click(function(e) {
e.preventDefault();
//If the uploader object has already been created, reopen the dialog
if (custom_uploader) {
    custom_uploader.open();
    return;
}
//Extend the wp.media object
custom_uploader = wp.media.frames.file_frame = wp.media({
    title:"blemblem",
    button: {
        text:"blemblem"
    },
    multiple: true
});
custom_uploader.on('select', function() {
        var selection = custom_uploader.state().get('selection');
        selection.map( function( attachment ) {
        attachment = attachment.toJSON();
        extension = extension(attachment.url).replace('.','');
        alert(extension);
    //...one commented line, that was to add files into HTML structure - works     perfect, but only once
        });
    });
    custom_uploader.open();
    });
    });

И единственный способ получить расширение по URL-адресу:

function extension(url) {
var ext=(url = url.substr(1 + url.lastIndexOf("/")).split('?')    [0]).substr(url.lastIndexOf("."));
return ext;
};

При нажатии кнопки открыть медиаменеджер открывается

Когда выберите один и нажмите добавить носитель, он будет добавлен (или в этом коде предупрежден)

Когда выбрано больше файлов, требуется только первый

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

Пожалуйста, не могли бы вы показать мне правильный путь? Спасибо

Author: user1980807, 2014-04-21

1 answers

Я немного отредактировал ваш код, и alert() выполняется для каждого выбранного элемента. Обратите внимание, что в своем коде вы выполняете return слишком рано, из-за чего приведенный ниже код не запускается после первого запуска. Кроме того, вы используете одно и то же имя для функции и для строки var, что не очень подходит.

function get_the_extension(url) {
    var ext=(url = url.substr(1 + url.lastIndexOf("/")).split('?')[0]).substr(url.lastIndexOf("."));
    return ext;
}

jQuery(document).ready(function($){

    var custom_uploader;
    $('#songbook_addfile_button').click(function(e) {
        e.preventDefault();
        //If the uploader object has already been created, reopen the dialog
        if (custom_uploader) {
            custom_uploader.open();
        }
        //Extend the wp.media object
        custom_uploader = wp.media.frames.file_frame = wp.media({
            title:"blemblem",
            button: {
                text:"blemblem"
            },
            multiple: true
        });
        custom_uploader.on('select', function() {
            var selection = custom_uploader.state().get('selection');
            selection.map( function( attachment ) {
                attachment = attachment.toJSON();
                var the_extension = get_the_extension(attachment.url).replace('.','');
                    alert(the_extension);
                    //...one commented line, that was to add files into HTML structure - works     perfect, but only once
            });
        });
        custom_uploader.open();
    });
});
 1
Author: cybmeta, 2014-05-12 12:08:01