Ограничение загрузки файлов на сайт WordPress — одна из важных задач для поддержания безопасности и производительности ресурса. Часто возникает необходимость ограничить размер, тип или количество загружаемых файлов, чтобы избежать переполнения хранилища, блокировать нежелательные форматы или защитить сайт от вредоносных загрузок.
Почему важно ограничивать загрузку файлов в WordPress
По умолчанию WordPress устанавливает лимит на размер загружаемых файлов, который зависит от настроек PHP на сервере. Однако этих ограничений может быть недостаточно или они могут не соответствовать требованиям вашего проекта. Например, если вы ведете блог и хотите разрешать загружать только изображения, стоит запретить загрузку исполняемых файлов. Или если у вас интернет-магазин, где пользователи загружают документы, важно ограничить максимальный размер для экономии места и предотвращения DoS-атак.
Правильно настроенные ограничения повышают безопасность, уменьшают нагрузку на сервер и контролируют качество контента на сайте.
Как проверить текущие ограничения загрузки файлов в WordPress
Для начала стоит узнать, какой максимальный размер файла разрешен на вашем сайте. Это можно сделать через админку WordPress, перейдя в Медиафайлы - Добавить новый. Там под полем загрузки указывается максимальный размер файла, например, "Максимальный размер файла для загрузки: 8 МБ".
Также можно получить эту информацию программно, используя следующий код (например, в файле functions.php вашей темы или в плагине):
function wpcom_get_upload_max_filesize() {
return ini_get('upload_max_filesize');
}
add_action('admin_notices', function() {
echo '<div class="notice notice-info">Максимальный размер загрузки файла: ' . wpcom_get_upload_max_filesize() . '</div>';
});Этот код выведет уведомление в админке с текущим лимитом загрузки.
Как изменить максимальный размер загружаемых файлов в WordPress
Изменение лимита зависит от настроек сервера и хостинга. Основные методы:
- Редактирование php.ini: Найдите или создайте файл php.ini в корне сайта и добавьте или измените параметры:
upload_max_filesize = 16M
post_max_size = 16M
memory_limit = 128M- Использование .htaccess (если сервер Apache): Добавьте в .htaccess в корне сайта:
php_value upload_max_filesize 16M
php_value post_max_size 16M- Через wp-config.php: Вставьте перед строкой /* That's all, stop editing! */:
@ini_set('upload_max_filesize', '16M');
@ini_set('post_max_size', '16M');После изменения проверяйте результат снова через админку. Если лимит не изменился, обратитесь к поддержке хостинга.
Ограничение типов файлов для загрузки
WordPress по умолчанию разрешает загрузку популярных форматов, но иногда необходимо расширить или сузить список допустимых MIME-типов. Для этого используйте фильтр wpcom_mime_types:
function wpcom_custom_mime_types($mimes) {
// Разрешаем только изображения и PDF
return [
'jpg|jpeg|jpe' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
'pdf' => 'application/pdf',
];
}
add_filter('upload_mimes', 'wpcom_custom_mime_types');Этот код ограничит загрузку только указанными форматами, блокируя любые другие.
Ограничение количества загружаемых файлов за один раз
Стандартный медиазагрузчик WordPress позволяет загружать несколько файлов за раз без ограничений. Если нужно ограничить количество файлов, можно добавить JavaScript в админку:
function wpcom_limit_media_uploads_script() {
?>
<script>
jQuery(document).ready(function($) {
var maxFiles = 3; // Максимум файлов за раз
$(document).on('change', 'input[type=file]', function() {
if(this.files.length > maxFiles) {
alert('Вы можете загружать не более ' + maxFiles + ' файлов за раз.');
this.value = '';
}
});
});
</script>
<?php
}
add_action('admin_footer-upload.php', 'wpcom_limit_media_uploads_script');Этот скрипт предупреждает пользователя, если он пытается загрузить больше файлов, чем разрешено.
Плагины для управления загрузками в WordPress
Если вы хотите упростить настройку ограничений или добавить дополнительные функции, используйте специализированные плагины:
- WP Limit Upload File Size — простой плагин для ограничения максимального размера файла по типам.
- File Upload Types — расширяет список допустимых MIME-типов и позволяет гибко управлять ими.
- Clearfy Pro — комплексный плагин для оптимизации и безопасности, включая управление загрузками.
Практический пример: интеграция ограничения размера и типа файла с уведомлением
Рассмотрим, как объединить проверку типа и размера файла на этапе загрузки через форму с помощью хука wp_handle_upload_prefilter. Это позволит заблокировать загрузку, если файл не соответствует требованиям.
function wpcom_upload_restrictions($file) {
$max_size = 2 * 1024 * 1024; // 2 МБ
$allowed_types = ['image/jpeg', 'image/png', 'application/pdf'];
if (!in_array($file['type'], $allowed_types)) {
$file['error'] = 'Ошибка: недопустимый тип файла. Разрешены только JPG, PNG и PDF.';
}
if ($file['size'] > $max_size) {
$file['error'] = 'Ошибка: файл превышает максимальный размер 2 МБ.';
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'wpcom_upload_restrictions');Этот код проверит тип и размер файла перед загрузкой и выдаст ошибку, если файл не подходит.
Рекомендации по безопасности при загрузке файлов
Ограничения — лишь часть общей стратегии безопасности. Для надежной защиты:
- Используйте плагины безопасности, например, Clearfy Pro, которые блокируют вредоносные загрузки.
- Регулярно обновляйте WordPress, темы и плагины.
- Сканируйте загруженные файлы антивирусом на сервере.
- При необходимости используйте внешние сервисы хранения медиа, чтобы разгрузить сервер.
Таким образом, грамотное ограничение загрузок в WordPress помогает поддерживать безопасность, стабильность и удобство работы с сайтом.