Rejeitar o upload de imagens de tamanho incorreto usando o Media Uploader

12

Estou trabalhando em uma configuração superestrita para adicionar imagens a campos personalizados na tela Publicar edição. Meu cenário ideal seria adicionar uma mensagem de erro personalizada quando o usuário tentar enviar uma imagem do tamanho incorreto para esse valor personalizado específico.

Estou ciente de que posso fazer isso com qualquer usuário de upload personalizado, mas eu realmente prefiro fazer isso com o Media Uploader regular. Também estou ciente do wp_handle_upload_prefilter que já uso para validar nomes de arquivos e gerar mensagens de erro personalizadas com base em requisitos genéricos . O que eu preciso agora é uma forma de usar os requisitos personalizados para rejeitar envios com base no campo para o qual estamos fazendo o upload.

Também estou ciente de Diferenciar a imagem em destaque das imagens postadas após o envio , mas eu queria uma pré-gravação solução.

Isso seria algo como isto:

Alguma idéia de como informar wp_handle_upload_prefilter (ou similar) de qual campo estamos lidando?

    
por moraleida 04.08.2014 / 17:08

1 resposta

3

No seu manipulador, se você definir 'error', a mensagem de erro será exibida e cancelará o upload

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

Se o usuário tentar enviar um tamanho diferente, a mensagem será:

“thefile.png” has failed to upload due to an error  
Size must be exactly 800 * 600

Observe que wp_handle_upload_prefilter vem muito cedo no processamento de upload, portanto, talvez você queira testar se o arquivo foi carregado corretamente (do ponto de vista do HTTP) e é uma imagem antes de testar o tamanho.

Ref: funtion wp_handle_upload() no arquivo principal wp-admin/includes/file.php

    
por YaFred 17.08.2014 / 13:45