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

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

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

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

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

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

Максимальный размер загрузки определяется настройками PHP (параметры upload_max_filesize и post_max_size), а также WordPress. Однако можно дополнительно проверить размер файлов на уровне WordPress и вывести понятное сообщение об ошибке.

Изменение параметров PHP

Чтобы увеличить или уменьшить максимальный размер загрузки, в файле php.ini или .htaccess можно прописать:

upload_max_filesize = 5M
post_max_size = 5M

Где 5M — это 5 мегабайт. Но если доступа к настройкам PHP нет, поможет следующий способ.

Проверка размера файла через хук WordPress

Добавим проверку с помощью фильтра wp_handle_upload_prefilter в файл functions.php или отдельный плагин:

function wpfix_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', 'wpfix_limit_file_size');

Этот код не позволит загрузить файлы, размер которых больше 2 Мб, и выведет ошибку.

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

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

Использование фильтра upload_mimes

Внесём изменения в список разрешённых MIME-типов:

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

Теперь пользователь сможет загружать только картинки и PDF-документы.

Добавление исключений для администраторов

Иногда админы должны иметь расширенные права на загрузку. Добавим проверку роли:

function wpfix_restrict_mime_types_for_users($mimes) {
    if (current_user_can('manage_options')) {
        return $mimes; // админ может загружать все
    }
    return array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
        'pdf' => 'application/pdf',
    );
}
add_filter('upload_mimes', 'wpfix_restrict_mime_types_for_users');

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

Если хочется более гибко управлять загрузками, можно использовать плагины. Например:

  • Clearfy Pro — оптимизирует работу сайта и позволяет управлять безопасностью, в том числе настройками загрузок.
  • My Popup — позволяет создавать кастомные всплывающие окна, например, с уведомлениями о правилах загрузки.

Но чаще всего достаточно простых фильтров и проверок, описанных выше.

Обработка ошибок и пользовательский интерфейс

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

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

Пример AJAX-обработчика с проверкой размера файла

add_action('wp_ajax_wpfix_ajax_upload', 'wpfix_ajax_upload_handler');
function wpfix_ajax_upload_handler() {
    if (empty($_FILES['file'])) {
        wp_send_json_error('Файл не загружен');
    }

    $file = $_FILES['file'];
    $max_size = 2 * 1024 * 1024; // 2Мб

    if ($file['size'] > $max_size) {
        wp_send_json_error('Размер файла превышает 2 Мб');
    }

    $uploaded = wp_handle_upload($file, array('test_form' => false));

    if (isset($uploaded['error'])) {
        wp_send_json_error($uploaded['error']);
    }

    wp_send_json_success($uploaded['url']);
}

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

Итоги и рекомендации

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

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

Создать и использовать собственные типы записей в WordPress
30.12.2025
Как успешно использовать WPRemark для улучшения комментариев в WordPress
16.12.2025
Как использовать WPCommunity для создания внутреннего интранета на WordPress
10.02.2026
Как использовать WPCommunity для создания внутреннего форума на WordPress
23.01.2026
Как удалить все комментарии в WordPress с помощью кода
18.11.2025