Cargador de medios: obtenga archivos eliminados

4

Actualmente estoy trabajando en un complemento para cargar archivos en wordpress usando el cargador de archivos. El usuario puede guardar una lista de archivos para usar en otra ubicación del tema. Todo funciona, excepto cuando quiero borrar archivos.

Puedo eliminar los archivos usando el cargador de medios, lo cual no es un problema. Los archivos se eliminan en el fondo de wordpress. Pero cuando se elimina un archivo en el cargador de medios, también quiero que se elimine de la lista que el usuario está editando actualmente, por lo que los archivos no se pueden guardar en mi tabla de base de datos personalizada cuando ya no existe en el "entorno de medios". Sé qué javascript necesito para eliminarlos de mi lista, pero no sé cómo obtener los archivos eliminados del cargador de medios.

A continuación hay dos soluciones posibles que parecen lógicas, pero aún no he encontrado el enfoque correcto.

Enfoque 1

function someFunction() {
    (...)
    file_frame.on('select', handle_upload); //This works
    file_frame.on('delete', handle_delete_media); //perhaps something like this exists?
}

Enfoque 2 (No estoy seguro de si es un buen enfoque, ya que requiere la selección de archivos)

function handle_upload() {
    var files = file_frame.state().get('selection').toJSON(); //This works
    var files = file_frame.state().get('deleted').toJSON(); //perhaps something like this exists?
    (...)
}

Cualquier ayuda sería muy apreciada.

EDIT

Este es el código para abrir el Cargador de medios

function open_uploader(e)
{
    e.preventDefault();

    if(file_frame) {
        file_frame.open();
        return;
    }

    file_frame = wp.media.frames.file_frame = wp.media({
        title: 'Select files for your List',
        multiple: true,
        button: {
            text: 'Insert into List',
        }
    });

    file_frame.on('select', handle_upload);
    //file_frame.on('delete', handle_media_delete); I NEED SOMETHING LIKE THIS

    file_frame.open();
}

Y este código es el script para agregar los archivos seleccionados a la lista, que ya funciona. Esto es básicamente solo un código jQuery.

function handle_upload(e)
{
    var files = file_frame.state().get('selection').toJSON();

    jQuery(files).each(function(index, attachment){
        var url = attachment.url.toString();
        var media_id = attachment.id.toString();
        var title = attachment.title.toString();
        var description = attachment.description.toString();
        (...)
    });
}
    
pregunta Michiel Standaert 28.08.2013 - 14:34

1 respuesta

1

Sin ver su código de "editor de listas" solo puedo proporcionar una respuesta teórica.

  

cuando se elimina un archivo en el cargador de medios, también quiero que se elimine de la lista que el usuario está editando actualmente, por lo que los archivos no se pueden guardar en mi tabla de base de datos personalizada cuando ya no existe en el "entorno de medios ". Sé qué javascript necesito para eliminarlos de mi lista, pero no sé cómo obtener los archivos eliminados del cargador de medios.

Antes de guardar la lista en su tabla de base de datos personalizada, haga una comprobación rápida si estos archivos multimedia existen en la Biblioteca de Medios de WordPress y el sistema de archivos.

La solución exacta depende de cómo esté guardando en su tabla de base de datos personalizada. Si estás utilizando las API de WordPress Core, esto podría ayudarte: enlace .

Por ejemplo:

<?php
function so111965_filter_deleted_handler( $data , $postarr ) {
  // do the filtering of deleted files here
  return $data;
}

add_filter( 'wp_insert_post_data', 'so111965_filter_deleted_handler', '99', 2 );
?> 
    
respondido por el Azizur Rahman 30.08.2013 - 19:53

Lea otras preguntas en las etiquetas