Функция wp_max_upload_size()
в WordPress используется для получения максимально допустимого размера файла, который можно загрузить через медиа-загрузчик или другие формы, работающие с файлами. Размер загружаемого файла определяется настройками PHP, и функция возвращает это значение в байтах.
wp_max_upload_size(): int
Возвращаемое значение:
Функция возвращает целое число (int), которое представляет максимально допустимый размер загружаемого файла в байтах.
Как работает wp_max_upload_size()
Функция берет минимальное значение из двух PHP-опций: upload_max_filesize
и post_max_size
, определенных в файле php.ini
. Эти параметры устанавливают ограничения на размер файла и данных, которые могут быть переданы серверу через POST-запрос.
Пример значений в файле php.ini
:
upload_max_filesize = 20M
post_max_size = 100M
В данном примере функция вернет значение 20MB
, так как это минимальное значение среди указанных ограничений.
Важные аспекты
- PHP-настройки: Настройки
upload_max_filesize
иpost_max_size
определяют допустимый размер загружаемого файла. - Nginx ограничения: Если ваш сервер работает под Nginx, не забудьте о настройке
client_max_body_size
, которая также может ограничивать размер загружаемых файлов.
Пример 1: Использование в форме для проверки размера файла
Предположим, у нас есть форма, через которую пользователи могут загружать файлы. Мы можем использовать значение, возвращаемое wp_max_upload_size()
, чтобы добавить атрибут data-maxfsize
в поле формы. Затем на стороне клиента можно проверить размер файла перед отправкой.
<form>
<input id="file-input" type="file" data-maxfsize="<?= (int) wp_max_upload_size() ?>" />
<p id="file-result"></p>
<input id="file-submit" type="submit" disabled />
</form>
Теперь мы можем использовать JavaScript для проверки размера файла перед его отправкой:
const fileInput = document.getElementById('file-input');
const fileResult = document.getElementById('file-result');
const fileSubmit = document.getElementById('file-submit');
const maxFileSize = parseInt(fileInput.dataset.maxfsize);
fileInput.addEventListener('change', function() {
if (fileInput.files.length > 0) {
const fileSize = fileInput.files.item(0).size;
if (maxFileSize >= fileSize) {
fileSubmit.disabled = false;
} else {
fileResult.innerHTML = `Файл превышает допустимый размер. Пожалуйста, выберите файл размером меньше ${Math.floor(maxFileSize / (1024 * 1024))} МБ.`;
}
}
});
В этом примере, если пользователь пытается загрузить файл, превышающий максимальный размер, отображается предупреждение, и кнопка отправки отключается.
Пример 2: Ограничение размера загружаемого файла для определенной группы пользователей
Допустим, у вас есть сервер, на котором можно загружать файлы размером до 300 МБ, но вы хотите ограничить загрузки через WordPress до 10 МБ. Для этого можно использовать фильтр upload_size_limit
, чтобы переопределить максимально допустимый размер файла в рамках WordPress.
add_filter( 'upload_size_limit', function() {
return 10 * MB_IN_BYTES; // Ограничиваем до 10 MB
});
Этот фильтр изменяет максимальный размер загрузки только для WordPress, при этом другие скрипты на сервере по-прежнему могут принимать файлы большего размера.
Пример 3: Получение максимального размера файла
Вы можете получить максимальный размер загружаемого файла и вывести его на экран или использовать для логики проверки.
$max_upload_size = wp_max_upload_size();
echo 'Максимальный размер загружаемого файла: ' . $max_upload_size . ' байт';
Этот код выведет максимальный размер файла в байтах. Например, для ограничения 10 МБ результат будет:
Максимальный размер загружаемого файла: 10485760 байт
Опции сервера и их влияние на загрузку файлов
upload_max_filesize
: Определяет максимальный размер одного файла, который можно загрузить через PHP.post_max_size
: Ограничивает общий объем данных, передаваемых через POST-запрос. Это значение должно быть больше или равноupload_max_filesize
, чтобы разрешить загрузку крупных файлов.client_max_body_size
(Nginx): Если сервер работает на Nginx, это настройка может ограничивать размер тела запроса, включая загружаемые файлы. Если это значение меньше, чемpost_max_size
в PHP, загрузка будет прервана еще до обработки PHP.
Заключение
Функция wp_max_upload_size()
позволяет разработчикам легко получить максимально допустимый размер загружаемого файла, определенный настройками PHP. Это важная функция для защиты от ошибок при загрузке файлов, так как помогает избежать ситуаций, когда пользователи пытаются загрузить слишком крупные файлы.