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

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

Почему важно ограничивать загрузку файлов в WordPress

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

  • Перегрузка хостинга из-за больших файлов.
  • Риск безопасности при загрузке потенциально опасных форматов.
  • Проблемы с производительностью сайта.

Поэтому важно установить четкие правила, которые позволят контролировать размер и типы загружаемых файлов.

Ограничение размера загружаемых файлов через functions.php

WordPress по умолчанию наследует максимальный размер загрузки из настроек PHP. Но можно дополнительно ограничить размер через код. Вот пример функции с префиксом wporg_, которая ограничит максимальный размер загружаемого файла до 2 МБ:

function wporg_limit_upload_size( $file ) {
    $max_size = 2 * 1024 * 1024; // 2 МБ в байтах
    if ( $file['size'] > $max_size ) {
        $file['error'] = 'Ошибка: размер файла не должен превышать 2 МБ.';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wporg_limit_upload_size' );

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

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

Чтобы запретить загрузку определенных типов файлов, можно использовать следующий код. Например, запретим загрузку файлов с расширением .exe и .bat:

function wporg_restrict_file_types( $file ) {
    $forbidden_types = [ 'exe', 'bat' ];
    $file_ext = pathinfo( $file['name'], PATHINFO_EXTENSION );
    if ( in_array( strtolower($file_ext), $forbidden_types ) ) {
        $file['error'] = 'Ошибка: загрузка данного типа файлов запрещена.';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wporg_restrict_file_types' );

Вы можете расширить массив $forbidden_types по своему усмотрению, чтобы закрыть загрузку других опасных форматов.

Использование плагинов для ограничения загрузок

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

  • WP File Upload — расширенные настройки загрузки с ограничением типов и размеров файлов. Подробнее на WPShop
  • Clearfy Pro — оптимизация и безопасность, в том числе контроль загрузок. Подробнее на WPShop

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

Дополнительные советы по безопасности загрузок в WordPress

Кроме ограничений размера и типа, рекомендуется:

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

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

Как отобразить сообщение об ошибке при превышении лимита

В приведенных выше функциях ошибка возвращается через массив $file['error']. WordPress автоматически покажет это сообщение пользователю при загрузке через медиа-библиотеку или формы. Если вы используете кастомные формы, убедитесь, что обрабатываете ошибки корректно.

Пример полного кода с ограничением размера и типа

function wporg_validate_upload( $file ) {
    $max_size = 2 * 1024 * 1024; // 2 МБ
    $forbidden_types = [ 'exe', 'bat', 'js', 'php' ];

    if ( $file['size'] > $max_size ) {
        $file['error'] = 'Ошибка: размер файла не должен превышать 2 МБ.';
        return $file;
    }

    $file_ext = pathinfo( $file['name'], PATHINFO_EXTENSION );
    if ( in_array( strtolower($file_ext), $forbidden_types ) ) {
        $file['error'] = 'Ошибка: загрузка данного типа файлов запрещена.';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wporg_validate_upload' );

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин.

Итоги

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

Скачать WP с оф. сайта Магазин проверенных платных тем