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