Estoy tratando de crear una opción en la ventana de medios modal de WP para detectar archivos duplicados y eliminar un archivo más nuevo si se encuentra un duplicado anterior. Tengo el siguiente código funcionando (junto con el filtro 'attach_fields_to_edit') para anular la selección de un archivo duplicado y seleccionar el archivo original en el modo de medios. Lo que me gustaría hacer es que, cuando un usuario haga clic en el botón, elimine el archivo original (o al menos lo oculte en la ventana de la biblioteca multimedia para que pueda eliminarlo más tarde).
( function( $ ) {
var _AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
wp.media.view.Settings.AttachmentDisplay = _AttachmentDisplay.extend({
render: function() {
_AttachmentDisplay.prototype.render.apply(this, arguments);
currentselection = this.controller.state().get('selection').first().toJSON();
selection = this.controller.state().get('selection');
$('button.dmc').on('click', function(e){
e.preventDefault();
var id = $(e.currentTarget).data("id");
if(currentselection.id == id) {
currentattachment = wp.media.attachment(id);
selection.remove(currentattachment);
console.dir(wp.media.view.Attachment);
newattachment = wp.media.attachment($(e.currentTarget).data("original"));
selection.add(newattachment);
}
});
}
});
} )( jQuery );
La interfaz se parece a la imagen adjunta.

Puedo ver en media-views.js en la línea 5873 que hay una función deleteAttachment vinculada a 'click .delete-attach'. ¿Cómo puedo acceder a esto, dada mi configuración actual, pasando una ID de imagen o un objeto adjunto?
fuente

Respuestas:
Intentando una respuesta algo canónica (o al menos abundante), este es el javascript para
wpse142997.jsen el directorio de la plantilla secundaria:Este es el
functions.php:El javascript intenta seguir el modo modal de WP Media tanto como lo entiendo, lo cual es solo parcial. Crea ay
media.view.Attachmentusa unawp.templateplantilla. Hay algunos bits extravagantes: obtener la barra lateral en particular a través de un largo alcance en el objeto del marco parece sospechoso (y solo se encontró después de mucho hurgar).fuente
Solo tiene que llamar al
destroymétodo en elattachmentmodelo. Esto eliminará el archivo adjunto de la vista Biblioteca de medios y enviará una llamada ajax al backend para eliminar el archivo adjunto en la base de datos y todos los archivos vinculados en el directorio de cargas.No necesita convertir el archivo adjunto a JSON para obtener la identificación: puede manipular directamente los modelos de Backbone. El
selectiones una colección de varios archivos adjuntos.También he agregado una llamada $ .proxy para poder usar
thisdentro de la devolución de llamada del evento click.fuente