Измените массив выбранных изображений в модальном режиме мультимедиа
Я создаю плагин, который проверяет наличие дубликатов медиафайлов при загрузке. Если файл загружен, и он уже существует в библиотеке мультимедиа, я предоставляю пользователю возможность удалить загруженный файл и вставить вместо него существующий файл.
В модальном окне мультимедиа (которое появляется при нажатии кнопки "Добавить медиа" над редактором сообщений) У меня есть все, чтобы обнаружить дубликат файла, и предложить флажок, который пользователь может нажать, чтобы удалить дубликат (через "wp_ajax_save-вложение-сопоставление"). После того, как пользователь удалил новый файл, мне нужно найти способ изменить массив JavaScript выбранных в данный момент медиаэлементов, чтобы заменить идентификатор записи удаленного файла идентификатором записи дубликата, поэтому, когда пользователь нажимает "Вставить в сообщение", будет вставлено правильное изображение.
Вот скретч-код, который я сейчас использую. Это срабатывает всякий раз, когда делается новый выбор в модальном режиме мультимедиа по умолчанию.
( 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 );
1 answers
Я могу сделать следующее в модальном режиме мультимедиа:
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()
метод или что-то подобное.