¿Cómo requerir una dimensión mínima de imagen para la carga?
Necesito una manera de restringir que los autores suban imágenes por debajo de dimensiones específicas.
Digamos que solo quiero permitir la carga de imágenes que tengan al menos 400px x 400px. Si el tamaño de la imagen es más pequeño, el autor debería recibir un aviso de error indicando que la imagen es demasiado pequeña.
¿Existe algún plugin o código que pueda lograr esto?
Agrega este código al archivo functions.php de tu tema, y limitará las dimensiones mínimas de las imágenes
add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file)
{
$img=getimagesize($file['tmp_name']);
$minimum = array('width' => '640', 'height' => '480');
$width= $img[0];
$height =$img[1];
if ($width < $minimum['width'] )
return array("error"=>"Las dimensiones de la imagen son demasiado pequeñas. El ancho mínimo es {$minimum['width']}px. El ancho de la imagen subida es $width px");
elseif ($height < $minimum['height'])
return array("error"=>"Las dimensiones de la imagen son demasiado pequeñas. El alto mínimo es {$minimum['height']}px. El alto de la imagen subida es $height px");
else
return $file;
}
Luego solo cambia los números de las dimensiones mínimas que desees (en mi ejemplo son 640 y 480)

¡Gracias! ¿Hay alguna manera de NO ejecutar esta función si estamos incluyendo una miniatura de publicación?

Esto se ejecuta cada vez que cargas un archivo, en el paso cuando todavía es solo un archivo, antes de categorizarlo o asignarlo como miniatura. Puedes agregar una condición basada en el nombre del archivo con un prefijo/sufijo de tu elección, y nombrar tus archivos de miniaturas según esto, luego no ejecutar la función si el nombre del archivo cumple esa condición.

En la línea 14 las referencias necesitan tener "width" reemplazado por "height" pero por lo demás esto era exactamente lo que necesitaba.

Prefiero no reformatear el código de un colega.
Así que, esta es casi la misma respuesta que la de @MaorBarazany, pero verificando el tipo mime, cambiando la declaración de file['error']
y modificando el namespace de la función para esta pregunta de wpse.
Además, la verificación solo ocurre 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 )
{
// Tipo MIME con dimensiones, verificación para salir antes
$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'] =
'Imagen demasiado pequeña. El ancho mínimo es '
. $minimum['width']
. 'px. El ancho de la imagen subida es '
. $img[0] . 'px';
elseif ( $img[1] < $minimum['height'] )
$file['error'] =
'Imagen demasiado pequeña. La altura mínima es '
. $minimum['height']
. 'px. La altura de la imagen subida es '
. $img[1] . 'px';
return $file;
}
Resultado del hook:

Me encanta esto y funciona perfectamente. Sin embargo, hay un problema: si quiero aplicar este filtro solo en ciertos tipos de publicación, los usuarios aún pueden elegir una imagen de la Biblioteca Multimedia que fue subida en otro tipo de publicación (sin los requisitos de tamaño) que no cumple con estos requisitos.
