Змінення розміру вже робиться для створення великих / середніх розмірів / великого пальця, але проблема, з якою ви стикаєтесь, полягає в тому, що зображення занадто велике, щоб змінити розмір, або через брак пам'яті або часу.
Тож зміна розміру не є варіантом, якби не його, у вас не було б проблеми. Натомість спробуйте обмежити зображення, тож якщо завантаження 20 Мб трапиться, йому буде відмовлено у повідомленні, що його потрібно зменшити.
Обмеження на основі площі зображення / мегапікселів:
<?php
/**
* Plugin Name: Deny Giant Image Uploads
* Description: Prevents Uploads of images greater than 3.2MP
*/
function tomjn_deny_giant_images($file){
$type = explode('/',$file['type']);
if($type[0] == 'image'){
list( $width, $height, $imagetype, $hwstring, $mime, $rgb_r_cmyk, $bit ) = getimagesize( $file['tmp_name'] );
if($width * $height > 3200728){ // I added 100,000 as sometimes there are more rows/columns than visible pixels depending on the format
$file['error'] = 'This image is too large, resize it prior to uploading, ideally below 3.2MP or 2048x1536';
}
}
return $file;
}
add_filter('wp_handle_upload_prefilter','tomjn_deny_giant_images');
Обмеження на основі ширини або висоти:
/wordpress//posts/67110/reitions
<?php
/** Plugin Name: (#67107) »kaiser« Restrict file upload */
function wpse67107_restrict_upload( $file )
{
$file_data = getimagesize( $file );
// Handle cases where we can't get any info:
if ( ! $file_data )
return $file;
list( $width, $height, $type, $hwstring, $mime, $rgb_r_cmyk, $bit ) = $file_data;
// Add conditions when to abort
if ( $width > 2048 )
$file['error'] = 'Error statement';
return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wpse67107_restrict_upload' );
Обмеження за площею дозволить високим / тонким або широким / коротким зображенням, які можна змінити, а обмеження за розмірами може бути простіше пояснити