Как установить ограничения на размер и тип файлов в WordPress

В WordPress по умолчанию можно загружать файлы различных форматов, но часто возникает необходимость ограничить типы файлов и максимальный размер загружаемых данных. Это особенно важно для сохранения безопасности сайта, предотвращения загрузки вредоносных файлов и уменьшения нагрузки на сервер.

Почему важно ограничивать типы и размер загружаемых файлов

Без ограничений пользователи могут загружать слишком большие файлы, которые перегружают сервер и вызывают ошибки при обработке. Кроме того, разрешение на загрузку всех типов файлов повышает риск загрузки вредоносного кода, что может привести к взлому сайта.

Ограничения помогают:

  • Защитить сайт от нежелательных форматов файлов;
  • Уменьшить нагрузку на сервер и базу данных;
  • Обеспечить более контролируемый и предсказуемый процесс загрузки медиафайлов;
  • Повысить безопасность и стабильность работы сайта.

Ограничение максимального размера загружаемых файлов через wpbe_custom_upload_size

Для установки ограничения максимального размера можно воспользоваться хуком upload_size_limit. Создадим функцию wpbe_custom_upload_size, которая возвращает размер в байтах.

function wpbe_custom_upload_size( $size ) {
    // Устанавливаем лимит в 2 МБ
    $max_size = 2 * 1024 * 1024;
    return $max_size;
}
add_filter( 'upload_size_limit', 'wpbe_custom_upload_size' );

Этот код ограничит размер загружаемых файлов 2 мегабайтами. Можно изменить значение $max_size под свои нужды.

Проверка и изменение через php.ini и .htaccess

Обратите внимание, что на сервере также должны быть установлены соответствующие параметры в php.ini и .htaccess:

  • upload_max_filesize — максимальный размер загружаемого файла;
  • post_max_size — максимальный размер данных POST-запроса;
  • max_execution_time и max_input_time — время выполнения скриптов.

Если ограничения на уровне PHP ниже, чем в WordPress, они будут иметь приоритет.

Ограничение допустимых типов файлов с помощью wpbe_allowed_mime_types

Чтобы ограничить типы файлов, используйте фильтр upload_mimes. Создадим функцию wpbe_allowed_mime_types, которая будет возвращать массив разрешенных MIME-типов.

function wpbe_allowed_mime_types( $mimes ) {
    // Разрешаем только изображения и PDF
    return array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
        'pdf' => 'application/pdf'
    );
}
add_filter( 'upload_mimes', 'wpbe_allowed_mime_types' );

Этот код разрешит загружать только изображения форматов JPEG, PNG, GIF и PDF-документы. Все остальные форматы будут запрещены.

Добавление поддержки дополнительных форматов

Если нужно разрешить, например, SVG, что полезно для векторных изображений, добавьте в массив:

'svg' => 'image/svg+xml'

Однако с SVG стоит быть осторожным из-за возможных уязвимостей — рекомендуем использовать плагины для безопасной обработки SVG (например, Clearfy Pro).

Пример комплексного решения: ограничения на размер и тип файлов с уведомлением пользователя

Для лучшего UX добавим проверку на стороне сервера и вывод сообщения об ошибке, если загружаемый файл не соответствует требованиям.

function wpbe_check_uploaded_file( $file ) {
    $max_size = 2 * 1024 * 1024; // 2 МБ
    $allowed_types = array('image/jpeg', 'image/png', 'image/gif', 'application/pdf');

    if ( $file['size'] > $max_size ) {
        $file['error'] = 'Ошибка: размер файла превышает 2 МБ.';
    } elseif ( ! in_array( $file['type'], $allowed_types ) ) {
        $file['error'] = 'Ошибка: данный тип файла не разрешён к загрузке.';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wpbe_check_uploaded_file' );

Этот фильтр проверяет файл перед загрузкой и выдаёт понятное сообщение об ошибке, если ограничения нарушены. Пользователь видит причину отказа, что улучшает взаимодействие с сайтом.

Плагины для управления загрузками в WordPress

Если вы предпочитаете готовые решения, рассмотрите следующие плагины, которые позволяют гибко настраивать ограничения:

  • WP Upload Restriction — простой плагин для ограничения типов и размеров файлов;
  • File Upload Types by WPForms — позволяет выбирать разрешённые типы файлов в формах;
  • Clearfy Pro — комплексный инструмент оптимизации и безопасности, в том числе ограничения загрузок (подробнее на wpshop.ru).

Эти плагины помогут управлять загрузками без необходимости писать код, что удобно для пользователей без технических навыков.

Советы по обеспечению безопасности при загрузке файлов

Даже с ограничениями стоит соблюдать дополнительные меры безопасности:

  • Регулярно обновляйте WordPress, темы и плагины.
  • Используйте плагины для сканирования и очистки загружаемых файлов.
  • Ограничивайте доступ к загрузкам для определённых ролей пользователей.
  • Резервируйте сайт и базу данных перед внесением изменений.

Например, с помощью Expert Review можно контролировать и оценивать безопасность сайта.

Заключение

Ограничение размера и типа загружаемых файлов в WordPress — важный шаг для повышения безопасности, производительности и удобства работы с сайтом. Использование представленных фильтров и примеров кода позволит настроить загрузку под конкретные задачи. Если вы не хотите заниматься кодом, обратите внимание на проверенные плагины из официального репозитория и решения от WPSHOP.

Автоматическое удаление старых записей через WP-Cron в WordPress
13.12.2025
WooCommerce: автоматическое удаление заказов после отмены или возврата
16.05.2026
Как удалить все посты определённого автора в WordPress
19.02.2026
Автоматическое удаление неактивных клиентов в WooCommerce по сроку бездействия
26.04.2026
Настройка и создание кастомных всплывающих окон в WordPress
27.01.2026