¿Cómo exigir una dimensión mínima de imagen para cargar?
17
Necesito una forma de restringir que los autores carguen imágenes debajo de dimensiones específicas.
Digamos que solo quiero permitir la carga de imágenes que tengan al menos 400 px x 400 px. Si el tamaño de la imagen es más pequeño, el autor debe recibir un aviso de error de que la imagen es demasiado pequeña.
¿Hay algún complemento o código que pueda lograr esto?
¡Gracias! ¿Hay alguna forma de NO ejecutar esta función si estamos incluyendo una miniatura de publicación?
Arthur Dos Santos Dias
Esto se ejecuta cada vez que carga un archivo, en el paso sigue siendo solo un archivo, antes de clasificarlo o asignarlo como una miniatura. Puede agregar una condición basada en el nombre del archivo con un prefijo / sufijo de su elección, y nombrar sus miniaturas para que sean archivos de esta manera, que no ejecute la función si el nombre del archivo cumple esa condición.
Maor Barazany
Las referencias de la línea 14 deben tener "ancho" reemplazado por "altura" pero, de lo contrario, esto era exactamente lo que necesitaba.
11
Prefiero no formatear el código de un colega.
Entonces, esta es casi la misma respuesta que @ MaorBarazany, pero verificando el tipo mime, cambiando la file['error']declaración y cambiando el espacio de nombres de la función a esta ID de pregunta wpse.
Además, la verificación solo se produce para usuarios que no son 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;}
Me encanta esto y funciona como un encanto. Sin embargo, hay un problema: si quiero aplicar este filtro solo en ciertos tipos de publicaciones, los usuarios aún pueden elegir una imagen de la Biblioteca de medios que se cargó en otro tipo de publicación (sin los requisitos de tamaño) que no cumple con estos requisitos.
cfx
¿Hay alguna manera de aplicar esto solo si estamos cargando una imagen destacada?
Prefiero no formatear el código de un colega.
Entonces, esta es casi la misma respuesta que @ MaorBarazany, pero verificando el tipo mime, cambiando la
file['error']
declaración y cambiando el espacio de nombres de la función a esta ID de pregunta wpse.Además, la verificación solo se produce para usuarios que no son administradores .
Resultado del gancho:
fuente