Как установить минимальный размер изображения при загрузке?
Мне нужен способ ограничить авторов от загрузки изображений меньше определенных размеров.
Допустим, я хочу разрешить загрузку только тех изображений, которые имеют размер не менее 400px x 400px. Если размер изображения меньше, автор должен получить уведомление об ошибке, что изображение слишком маленькое.
Есть ли плагин или код, который может это реализовать?

Добавьте этот код в файл functions.php вашей темы, и он ограничит минимальные размеры загружаемых изображений
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"=>"Размеры изображения слишком малы. Минимальная ширина {$minimum['width']}px. Ширина загруженного изображения $width px");
elseif ($height < $minimum['height'])
return array("error"=>"Размеры изображения слишком малы. Минимальная высота {$minimum['height']}px. Высота загруженного изображения $height px");
else
return $file;
}
Затем просто измените значения минимальных размеров на нужные вам (в моём примере это 640 и 480)

Спасибо! Есть ли способ НЕ выполнять эту функцию, если мы включаем миниатюру записи?

Это выполняется каждый раз при загрузке файла, на этапе, когда он ещё просто файл, до его категоризации или назначения миниатюрой. Вы можете добавить условие на основе имени файла с префиксом/суффиксом по вашему выбору, называть ваши файлы миниатюр соответственно, и тогда не выполнять функцию, если имя файла соответствует этому условию.

В строке 14 нужно заменить "width" на "height", но в остальном это именно то, что мне было нужно.

Я предпочитаю не изменять форматирование кода коллеги.
Это практически тот же ответ, что и у @MaorBarazany, но с проверкой MIME-типа, изменением объявления file['error']
и использованием пространства имен функции, соответствующего ID данного вопроса wpse.
Также проверка выполняется только для пользователей, не являющихся администраторами.
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-типы изображений с возможностью проверки размеров, для раннего выхода
$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'] =
'Изображение слишком маленькое. Минимальная ширина составляет '
. $minimum['width']
. 'px. Загруженное изображение имеет ширину '
. $img[0] . 'px';
elseif ( $img[1] < $minimum['height'] )
$file['error'] =
'Изображение слишком маленькое. Минимальная высота составляет '
. $minimum['height']
. 'px. Загруженное изображение имеет высоту '
. $img[1] . 'px';
return $file;
}
Результат работы хука:

Отличное решение, работает как часы. Однако есть одна проблема: если я хочу применять этот фильтр только к определенным типам записей, пользователи все равно могут выбрать изображение из Медиатеки, которое было загружено для другого типа записей (без требований к размеру), и оно не будет соответствовать этим требованиям.
