ограничить размер файла для загрузки jpg и pdf

Я не разбираюсь в php, но я нашел фрагмент, который ограничивает моих пользователей от загрузки файлов изображений на мой сайт WordPress, размер которых превышает 1 МБ. (Я отредактирую это ограничение в соответствии со своими требованиями). Я предполагаю, что файлы изображений - это jpg, png и т. Д. Но как насчет файлов pdf, будет ли этот фрагмент также ограничивать их, или они не классифицируются как файлы типа "изображения"?

В идеале мне нужно ограничить файлы jpg и pdf. Это требует модификации?

// WP - LIMIT IMAGE UPLOAD SIZE
function max_image_size( $file ) {
$size = $file['size'];
$size = $size / 1024;
$type = $file['type'];
$is_image = strpos( $type, 'image' ) !== false;
$limit = 1024;  
$limit_output = '1MB';
if ( $is_image && $size > $limit ) {
$file['error'] = 'Image files must be smaller than ' . $limit_output;
}//end if
return $file;
}//end max_image_size()
add_filter( 'wp_handle_upload_prefilter', 'max_image_size' );

(Используя php 7.2) Заранее спасибо, Крис.

1 ответ

Решение

Если вы хотите ограничить все ресурсы, замените:

if ( $is_image && $size > $limit ) {
  $file['error'] = 'Image files must be smaller than ' . $limit_output;
}//end if

с:

if ( $size > $limit ) {
  $file['error'] = 'Files must be smaller than ' . $limit_output;
}//end if

Необязательно [1]: вы можете переименовать функцию max_image_size в max_file_size и изменить addfilter на add_filter( 'wp_handle_upload_prefilter', 'max_file_size');

Необязательно [2]: вы можете определить MIME-тип PDF, которым является application/pdf, используя:

$is_pdf = strpos( $type, 'pdf' ) !== false;

и добавьте другое условие:

if ( $is_image && $size > $limit ) {
  $file['error'] = 'Image files must be smaller than ' . $limit_output;
}//end if
if ( $is_pdf && $size > $limit ) {
  $file['error'] = 'PDF files must be smaller than ' . $limit_output;
}//end if
Другие вопросы по тегам