В WordPress часто возникает необходимость ограничить максимальный размер загружаемых файлов. Это важно для предотвращения переполнения диска, защиты от слишком больших файлов и соблюдения требований хостинга. В этой статье мы рассмотрим, как установить ограничение на размер загружаемых файлов в WordPress с помощью разных методов, включая настройки сервера, плагинов и добавление собственного кода.
Почему важно ограничивать размер загружаемых файлов в WordPress
По умолчанию WordPress наследует настройки PHP по максимальному размеру загружаемых файлов. Однако эти значения могут быть слишком большими или слишком маленькими в зависимости от задач сайта. Отсутствие ограничений может привести к:
- Заполнению дискового пространства на хостинге;
- Сбоям загрузки файлов при превышении допустимого размера;
- Негативному влиянию на производительность сайта;
- Безопасностным рискам, если пользователи пытаются загрузить слишком большие или вредоносные файлы.
Поэтому важно контролировать этот параметр и при необходимости настраивать его.
Как проверить текущий лимит загрузки файлов в WordPress
Чтобы узнать, какой максимальный размер файла разрешён для загрузки, можно зайти в админку и перейти в Медиафайлы > Добавить новый. Под полем загрузки будет написано что-то вроде:
Максимальный размер файла для загрузки: 8 МБ.
Также можно посмотреть текущие значения PHP-параметров, создав файл phpinfo.php с содержимым:
<?php phpinfo(); ?>Или вывести значения программно в functions.php темы:
function wpdemo_show_upload_limits() {
echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . '<br>';
echo 'post_max_size: ' . ini_get('post_max_size') . '<br>';
echo 'memory_limit: ' . ini_get('memory_limit') . '<br>';
}
add_action('admin_notices', 'wpdemo_show_upload_limits');Это поможет понять, какой лимит установлен на сервере и в WordPress.
Способы ограничения размера загружаемых файлов
1. Изменение настроек PHP на сервере
Самый эффективный способ — изменить значения параметров upload_max_filesize и post_max_size в файле php.ini или через панель управления хостингом.
Например, в php.ini:
upload_max_filesize = 5M
post_max_size = 5M
memory_limit = 128MПосле изменения перезапустите сервер, чтобы настройки вступили в силу.
Если нет доступа к php.ini, можно попробовать добавить в .htaccess:
php_value upload_max_filesize 5M
php_value post_max_size 5MОднако на некоторых хостингах такой метод запрещён.
2. Ограничение через functions.php темы
Можно программно ограничить размер загружаемых файлов в WordPress с помощью фильтра upload_size_limit. Этот фильтр позволяет задать максимальный размер в байтах, который будет проверяться перед загрузкой.
function wpdemo_limit_upload_size($size) {
// Ограничиваем размер до 2 МБ
$max_size = 2 * 1024 * 1024; // 2 МБ в байтах
return min($size, $max_size);
}
add_filter('upload_size_limit', 'wpdemo_limit_upload_size');Этот код стоит добавить в файл functions.php активной темы или в свой плагин. Он ограничит максимальный размер файла до 2 МБ, даже если на сервере стоит большее значение.
3. Использование плагинов для ограничения размера файлов
Если вы предпочитаете не работать с кодом, можно использовать плагины, которые позволяют ограничить размер загружаемых файлов через интерфейс:
- WP Upload Restriction — простой плагин для ограничения максимального размера и типов загружаемых файлов.
- File Upload Types by WPForms — позволяет ограничивать размер и расширения файлов, если используете формы WPForms.
- Clearfy Pro — плагин с набором оптимизаций, в том числе ограничением загрузок. Подробнее на wpshop.ru.
Дополнительные меры контроля загрузок в WordPress
Ограничение типов файлов
Кроме размера, важно ограничивать типы загружаемых файлов. По умолчанию WordPress запрещает загрузку опасных форматов, но можно дополнительно настроить разрешённые типы через фильтр upload_mimes:
function wpdemo_custom_mime_types($mimes) {
// Разрешаем только изображения и PDF
return array(
'jpg|jpeg|jpe' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
'pdf' => 'application/pdf',
);
}
add_filter('upload_mimes', 'wpdemo_custom_mime_types');Проверка размера файла на стороне клиента
Для лучшего UX стоит проверить размер файла ещё на стороне браузера с помощью JavaScript. Например, если вы используете кастомную форму загрузки, добавьте такой скрипт:
document.getElementById('file_input').addEventListener('change', function() {
const maxSize = 2 * 1024 * 1024; // 2 МБ
if (this.files[0].size > maxSize) {
alert('Файл слишком большой. Максимальный размер — 2 МБ.');
this.value = '';
}
});Как избежать ошибок при загрузке больших файлов
Если при загрузке файлов вы получаете ошибку типа "Размер файла превышает максимально допустимый", проверьте несколько моментов:
- Настройки
upload_max_filesizeиpost_max_sizeв PHP; - Ограничения, выставленные в WordPress (через фильтр
upload_size_limitили плагины); - Ограничения на стороне клиента (JavaScript);
- Настройки сервера — например, nginx или Apache могут иметь свои лимиты;
- Проверьте и увеличьте при необходимости лимиты памяти
memory_limitи времени выполнения скриптаmax_execution_time.
Пример комплексного решения ограничения размера загрузки в WordPress
Ниже пример функции с префиксом wpdemo_, которая реализует ограничение по размеру и типам файлов с пользовательским сообщением об ошибке:
function wpdemo_validate_upload_size_and_type($file) {
$max_size = 2 * 1024 * 1024; // 2 МБ
$allowed_types = array('image/jpeg', 'image/png', 'application/pdf');
if ($file['size'] > $max_size) {
return array('error' => 'Файл слишком большой. Максимальный размер — 2 МБ.');
}
if (!in_array($file['type'], $allowed_types)) {
return array('error' => 'Недопустимый тип файла. Разрешены только JPEG, PNG и PDF.');
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'wpdemo_validate_upload_size_and_type');Этот код можно добавить в functions.php. Он проверит загружаемый файл и выдаст ошибку, если файл не подходит по размеру или типу.
Заключение
Ограничение размера загружаемых файлов — важный момент для стабильной и безопасной работы сайта на WordPress. Выбор метода зависит от ваших возможностей доступа к серверу, задач и удобства. Для большинства пользователей достаточно изменить настройки PHP и добавить фильтр в functions.php или использовать специализированные плагины.
Если вы хотите использовать готовые решения с расширенными возможностями, рекомендую обратить внимание на плагин Clearfy Pro, который содержит инструменты оптимизации и контроля загрузок.