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

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

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

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

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

Например, если вы ведёте блог с изображениями, можно разрешить только форматы jpg, png и gif, чтобы исключить загрузку видео или архивов.

Ограничение размера и типа файлов через functions.php

Для ограничения типов файлов можно использовать фильтр upload_mimes. Например, чтобы разрешить только изображения и PDF:

function wpblog_upload_mimes($mimes) {
    return array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
        'pdf' => 'application/pdf',
    );
}
add_filter('upload_mimes', 'wpblog_upload_mimes');

Чтобы ограничить размер файла, можно использовать хук wp_handle_upload_prefilter. Пример функции, которая запрещает загрузку файлов больше 2 МБ:

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

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

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

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

  • WP Upload Restriction — позволяет задавать ограничения по типу и размеру файлов через админку, а также ограничивать загрузку для определённых ролей пользователей.
  • File Upload Types — расширяет список поддерживаемых форматов с возможностью точной настройки.
  • Clearfy Pro — комплексный плагин для оптимизации и безопасности, в том числе имеет опции для ограничения загрузок и фильтрации по MIME-типам.

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

Как проверить и изменить максимальный размер загрузки на сервере

Максимальный размер файла часто ограничен настройками PHP: upload_max_filesize и post_max_size. Чтобы узнать текущие значения, можно создать в корне сайта файл phpinfo.php с содержимым:

<?php
phpinfo();
?>

После доступа к этому файлу в браузере найдите параметры upload_max_filesize и post_max_size. Обычно для изменения нужно обновить php.ini или добавить в .htaccess строки:

php_value upload_max_filesize 10M
php_value post_max_size 10M

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

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

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

function wpblog_role_based_upload_restrictions($file) {
    $user = wp_get_current_user();
    if (in_array('administrator', $user->roles)) {
        return $file; // нет ограничений для админа
    }
    $max_size = 1 * 1024 * 1024; // 1 МБ
    $allowed_types = array('image/jpeg', 'image/png', 'image/gif');
    if ($file['size'] > $max_size) {
        $file['error'] = 'Ошибка: размер файла должен быть не более 1 МБ для вашей роли.';
        return $file;
    }
    if (!in_array($file['type'], $allowed_types)) {
        $file['error'] = 'Ошибка: разрешены только изображения JPEG, PNG, GIF.';
    }
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'wpblog_role_based_upload_restrictions');

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

Заключение

Ограничение загрузок в WordPress — важная задача для безопасности и производительности сайта. Вы можете реализовать её с помощью простых PHP-функций или использовать специальные плагины, такие как Clearfy Pro, для более гибкой настройки.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: как правильно удалять товары с очисткой связанных данных
25.04.2026
Оптимизация загрузки картинок в WordPress: практические методы и примеры
15.11.2025
Как автоматически удалять старый контент в WordPress по дате публикации
12.03.2026
Создать автоматические бэкапы WordPress без плагинов: практическое руководство
30.11.2025
Как установить ограничения на сохранение данных через REST API в WordPress
12.04.2026
×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙