Вопрос ограничения размера загружаемых файлов в WordPress часто возникает при необходимости контролировать нагрузку на сервер и предотвращать загрузку слишком больших медиафайлов или документов. В этой статье подробно рассмотрим, как задать и изменить лимиты на размер файлов через разные уровни настройки, а также покажем, как реализовать дополнительную проверку на стороне WordPress с помощью кода.
Почему важно ограничивать размер файлов
Без ограничений пользователи могут загружать очень большие изображения, видео или архивы, что приводит к:
- Перегрузке хостинга и превышению лимитов по использованию ресурсов.
- Замедлению работы сайта и увеличению времени загрузки страниц.
- Увеличению времени резервного копирования и сложности восстановления.
Поэтому правильная настройка лимитов помогает поддерживать стабильную работу и контролировать использование дискового пространства.
Ограничение размера файла на уровне PHP и сервера
Для начала стоит проверить и изменить параметры PHP, которые отвечают за загрузку файлов. Основные из них:
upload_max_filesize— максимальный размер загружаемого файла.post_max_size— максимальный размер POST-запроса, включая все данные.max_execution_time— максимальное время выполнения скрипта, важно для больших файлов.
Изменить эти параметры можно в файле php.ini или через .htaccess (если разрешено). Например, в php.ini:
upload_max_filesize = 10M
post_max_size = 12M
max_execution_time = 300
Если доступа к php.ini нет, попробуйте добавить в .htaccess в корне сайта:
php_value upload_max_filesize 10M
php_value post_max_size 12M
php_value max_execution_time 300
После внесения изменений нужно перезапустить сервер или попросить хостера применить настройки.
Ограничение размера файла через настройки WordPress
В WordPress максимальный размер загружаемого файла можно увидеть на странице загрузки медиафайлов (Медиа → Добавить). Однако изменить это значение WordPress напрямую не позволяет — оно зависит от настроек PHP и сервера.
Чтобы дополнительно контролировать размер файлов на уровне WordPress, можно использовать фильтр wp_handle_upload_prefilter. Он позволяет проверить файл до загрузки и выдать ошибку, если файл слишком большой.
Пример кода для ограничения размера файла в плагине или functions.php
function wpco_ru_limit_upload_size( $file ) {
// Максимальный размер файла в байтах (например, 5 МБ)
$max_size = 5 * 1024 * 1024;
if ( $file['size'] > $max_size ) {
$file['error'] = 'Ошибка: размер файла превышает 5 МБ. Пожалуйста, загрузите файл меньшего размера.';
}
return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wpco_ru_limit_upload_size' );
Этот код можно добавить в файл functions.php активной темы или в отдельный плагин. Он проверит размер каждого загружаемого файла и выведет ошибку, если файл слишком большой.
Дополнительные плагины для контроля загрузок
Если хочется более гибко управлять загрузками и ограничениями, можно использовать плагины:
- WP Limit Upload Filesize — позволяет задать ограничения для разных ролей пользователей.
- Clearfy Pro — оптимизирует сайт и имеет настройки безопасности, включая ограничения на загрузки.
Установка плагина происходит стандартно через админ-панель WordPress (Плагины → Добавить новый). После активации можно задать лимиты в настройках плагина.
Как проверить текущие ограничения загрузки в WordPress
Для диагностики можно использовать следующий сниппет, который выведет текущие ограничения PHP и WordPress:
function wpco_ru_show_upload_limits() {
echo '<pre>';
echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . "\n";
echo 'post_max_size: ' . ini_get('post_max_size') . "\n";
echo 'max_execution_time: ' . ini_get('max_execution_time') . "\n";
echo 'Максимальный размер загрузки WordPress: ' . wp_max_upload_size() . " байт\n";
echo '</pre>';
}
add_action( 'admin_notices', 'wpco_ru_show_upload_limits' );
Этот код выведет информацию на странице админки, что поможет понять, какие значения сейчас применяются.
Советы по увеличению лимитов на разных хостингах
На некоторых популярных хостингах есть ограничения, которые нельзя изменить самостоятельно. В таких случаях рекомендуем:
- Обратиться в поддержку хостинга с просьбой увеличить лимиты.
- Перейти на тариф с расширенными ресурсами.
- Использовать CDN и внешние хранилища (например, Amazon S3) для больших файлов.
Также полезно периодически чистить библиотеку медиафайлов от неиспользуемых и оптимизировать изображения с помощью плагинов, например, Clearfy Pro.
Заключение
Установка ограничений на размер загружаемых файлов в WordPress — важный этап в управлении ресурсами сайта и обеспечении стабильной работы. Используйте сочетание настроек PHP, проверок на стороне WordPress и, при необходимости, дополнительные плагины для гибкого контроля. Приведённые в статье примеры кода помогут быстро внедрить базовые проверки без сложных плагинов.