selección múltiple del administrador de medios

3

Estaba creando un complemento, y su parte debería agregar archivos a publicaciones personalizadas. Logré que el script funcionara, pero después de algunos cambios, para ver y funcionar mejor, solo permite agregar un archivo, de lo que no se permite ningún otro. ¿Puedes ayudarme, por favor?

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();
    });
    });

y el archivo fc para obtener la extensión de la URL es este:

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

Al hacer clic en el botón Abrir administrador de medios, se abre

cuando seleccione uno y haga clic en agregar medios, se agregará (o se alertará en este código)

cuando se seleccionan más archivos, toma solo el primero

después de agregar el primer archivo, luego se abre al hacer clic, pero no agregue ningún archivo cuando haga clic en el botón Agregar del administrador.

Por favor, ¿puedes mostrarme el camino correcto? Gracias

    
pregunta user1980807 21.04.2014 - 14:44

1 respuesta

1

He editado un poco tu código y se ejecuta el alert() para cada elemento seleccionado. Tenga en cuenta que en su código usted ejecuta un return demasiado pronto para que el siguiente código no se ejecute después de la primera ejecución. Además, usa el mismo nombre para una función y para una cadena var, lo cual no es muy apropiado.

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();
    });
});
    
respondido por el cybmeta 11.05.2014 - 11:14

Lea otras preguntas en las etiquetas