Media Uploader: obtenha arquivos apagados

4

Atualmente, estou trabalhando em um plug-in para fazer upload de arquivos para o wordpress usando o aplicativo de upload de arquivos. O usuário pode salvar uma lista de arquivos para usar em outro local do tema. Tudo funciona, exceto quando eu quero excluir arquivos.

Eu posso excluir os arquivos usando o carregador de mídia, o que não é problema. Os arquivos são removidos no plano de fundo do wordpress. Mas quando um arquivo é excluído no carregador de mídia, também quero removê-lo da lista que o usuário está editando no momento, para que os arquivos não possam ser salvos em minha tabela de banco de dados personalizada quando não existir mais no "ambiente de mídia". Eu sei qual javascript eu preciso para removê-los da minha lista, mas eu não sei como obter os arquivos excluídos do carregador de mídia.

Abaixo estão duas soluções possíveis que parecem lógicas, mas ainda não encontrei a abordagem correta.

Abordagem 1

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

Abordagem 2 (Não tenho certeza se essa é uma boa abordagem, já que requer seleção de arquivos)

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?
    (...)
}

Qualquer ajuda seria muito apreciada.

EDITAR

Este é o código para abrir o Media Uploader

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();
}

E esse código é o script para adicionar os arquivos selecionados à lista, o que já funciona. Isso é basicamente apenas algum 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();
        (...)
    });
}
    
por Michiel Standaert 28.08.2013 / 14:34

1 resposta

1

Sem ver o código do "editor de listas", só posso fornecer uma resposta teórica.

  

quando um arquivo é excluído no carregador de mídia, também quero removê-lo da lista que o usuário está editando no momento, para que os arquivos não possam ser salvos em minha tabela de banco de dados personalizada quando não existir mais no "ambiente de mídia" ". Eu sei qual javascript eu preciso para removê-los da minha lista, mas eu não sei como obter os arquivos excluídos do carregador de mídia.

Antes de salvar a lista na tabela do banco de dados personalizado, verifique rapidamente se esses arquivos de mídia existem na Biblioteca de Mídia do WordPress e no sistema de arquivos.

A solução exata depende de como você está salvando em sua tabela de banco de dados personalizada. Se você estiver usando as APIs do WordPress Core, isso pode ajudá-lo: enlace .

Por exemplo:

<?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 );
?> 
    
por Azizur Rahman 30.08.2013 / 19:53

Tags