Como exigir uma dimensão mínima de imagem para upload?
17
Preciso de uma maneira de impedir que os autores enviem imagens abaixo das dimensões específicas.
Digamos que só queira permitir o upload de imagens com pelo menos 400 px x 400 px. Se o tamanho da imagem for menor, o autor receberá um aviso de erro de que a imagem é muito pequena.
Obrigado! Existe alguma maneira de NÃO executar esta função se estiver incluindo uma miniatura de postagem?
Arthur Dos Santos Dias
Isso é executado sempre que você faz o upload de um arquivo, na etapa ainda é apenas um arquivo, antes de categorizá-lo ou atribuí-lo como miniatura. Você pode adicionar uma condição com base no nome do arquivo com um prefixo / sufixo de sua escolha e nomear sua miniatura como arquivos por isso, para não executar a função se o nome do arquivo atender a essa condição.
Maor Barazany
As referências da linha 14 precisam ter "width" substituído por "height", mas, caso contrário, era exatamente isso que eu precisava.
11
Prefiro não reformatar o código de um colega.
Portanto, essa é quase a mesma resposta que a de @ MaorBarazany, mas verificando o tipo mime, alterando a file['error']declaração e alterando o espaço de nomes da função para esse wpse Question ID.
Além disso, a verificação ocorre apenas para usuários que não são administradores .
add_action('admin_init','wpse_28359_block_authors_from_uploading_small_images');function wpse_28359_block_authors_from_uploading_small_images(){if(!current_user_can('administrator'))
add_filter('wp_handle_upload_prefilter','wpse_28359_block_small_images_upload');}function wpse_28359_block_small_images_upload( $file ){// Mime type with dimensions, check to exit earlier
$mimes = array('image/jpeg','image/png','image/gif');if(!in_array( $file['type'], $mimes ))return $file;
$img = getimagesize( $file['tmp_name']);
$minimum = array('width'=>640,'height'=>480);if( $img[0]< $minimum['width'])
$file['error']='Image too small. Minimum width is '. $minimum['width'].'px. Uploaded image width is '. $img[0].'px';
elseif ( $img[1]< $minimum['height'])
$file['error']='Image too small. Minimum height is '. $minimum['height'].'px. Uploaded image height is '. $img[1].'px';return $file;}
Amo isso e funciona como um encanto. No entanto, há um problema: se eu quiser aplicar esse filtro apenas em certos tipos de postagem, os usuários ainda poderão escolher uma imagem da Biblioteca de Mídia que foi carregada em outro tipo de postagem (sem os requisitos de tamanho) que não atenda a esses requisitos.
cfx 16/05
Existe uma maneira de aplicar isso apenas se estivermos carregando imagem em destaque?
Prefiro não reformatar o código de um colega.
Portanto, essa é quase a mesma resposta que a de @ MaorBarazany, mas verificando o tipo mime, alterando a
file['error']
declaração e alterando o espaço de nomes da função para esse wpse Question ID.Além disso, a verificação ocorre apenas para usuários que não são administradores .
Resultado do gancho:
fonte