web-dev-qa-db-ja.com

メディアモーダルで選択した画像の配列を修正する

アップロード時に重複するメディアアイテムをチェックするプラグインを作成しています。ファイルがアップロードされ、それがすでにメディアライブラリに存在する場合は、アップロードされたファイルを削除して代わりに既存のファイルを挿入するオプションをユーザーに提示します。

モーダルメディアウィンドウ(ポストエディタの上にある[メディアの追加]をクリックすると表示されるウィンドウ)で、複製ファイルを検出するためのすべての作業が完了し、ユーザーがクリックして複製を削除できるチェックボックスが表示されます。 attachment-compat ')ユーザーが新しいファイルを削除した後、現在選択されているメディアアイテムのJavaScript配列を変更し、削除されたファイルの投稿IDを複製の投稿IDに置き換える方法を見つける必要があります。 「投稿に」、正しい画像が挿入されます。

これが私が現在使っているスクラッチコードです。これは、デフォルトのメディアモーダルで新しい選択が行われるたびに発生します。

( function( $ ) {

    var _AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
    wp.media.view.Settings.AttachmentDisplay = _AttachmentDisplay.extend({
        render: function() {
            _AttachmentDisplay.prototype.render.apply(this, arguments);
            selection = this.controller.state().get('selection').first().toJSON();
            //selection = this.controller.state().get('selection');

            filename = selection.filename;

            attachment = wp.media.attachment(id);  // get attachment with id

            console.dir(filename);
            console.dir(selection);
        }
    });

} )( jQuery );
3
bcorkins

私はメディアモーダルで次のことをすることができます:

          var selection = wp.media.frame.state().get('selection'); // get selected collection
          attachment = wp.media.attachment(id);  // get attachment with id
          attachment.fetch();
          selection.add(attachment);  // add attachment to selection collection

.remove()メソッドなどがあるはずです。

3
Dmitry Mukhin