web-dev-qa-db-ja.com

メディアマネージャ複数選択

私はプラグインを作成していました、そしてその部分はカスタム投稿にファイルを追加することであるべきです。私はスクリプトを動作させるように管理しましたが、見た目と機能を向上させるために、わずかな変更を加えるだけで、追加できるファイルは1つだけになりました。お願いします。

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から拡張子を取得するための1つのfcは次のとおりです。

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

メディアマネージャを開くボタンをクリックすると開きます

メディアを選択して[メディアの追加]をクリックすると、メディアが追加されます(またはこのコードでは警告が表示されます)

より多くのファイルが選択されるとき、それは最初だけを取ります

最初のファイルを追加した後、クリックすると開きますが、マネージャの追加ボタンをクリックしてもファイルは追加されません。

どうぞ、正しい道を教えてください。ありがとうございました

3
user1980807

私はあなたのコードを少し編集しました、そして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
cybmeta