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

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

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

Как проверить текущие ограничения на загрузку видео

По умолчанию WordPress использует настройки PHP и сервера для лимитов загрузки:

  • upload_max_filesize — максимальный размер файла;
  • post_max_size — максимальный размер POST-запроса;
  • max_execution_time — время выполнения скрипта;
  • ограничения медиабиблиотеки в WordPress.

Проверить текущие значения можно через phpinfo() или файл wp-includes/pluggable.php. Для видео длительность проверяется только программно.

Пошаговое решение: установка ограничений на размер и длительность видео

1. Ограничение размера файла через фильтр upload_size_limit

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

add_filter('upload_size_limit', function($size) {
    $max_size = 50 * 1024 * 1024; // 50 МБ
    return ($size > $max_size) ? $max_size : $size;
});

2. Проверка длительности видео при загрузке с помощью wp_handle_upload_prefilter

Для проверки длительности используем PHP-библиотеку ffmpeg (должна быть установлена на сервере). Пример кода:

add_filter('wp_handle_upload_prefilter', function($file) {
    if (strpos($file['type'], 'video') !== 0) {
        return $file; // не видео
    }
    $tmp_name = $file['tmp_name'];
    $cmd = "ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 " . escapeshellarg($tmp_name);
    $duration = shell_exec($cmd);
    $max_duration = 300; // максимум 5 минут
    if ($duration && floatval($duration) > $max_duration) {
        $file['error'] = 'Видео слишком длинное. Максимальная длительность 5 минут.';
    }
    return $file;
});

3. Ограничение типа файлов и вывод информативных ошибок

Чтобы избежать загрузки неподдерживаемых форматов, добавьте проверку MIME-типа и вывод ошибок:

add_filter('wp_handle_upload_prefilter', function($file) {
    $allowed_types = ['video/mp4', 'video/webm', 'video/ogg'];
    if (!in_array($file['type'], $allowed_types)) {
        $file['error'] = 'Недопустимый формат видео. Разрешены: MP4, WebM, OGG.';
        return $file;
    }
    return $file;
});

Как проверить, что ограничения работают

  • Попробуйте загрузить видео размером больше 50 МБ — WordPress должен выдать ошибку.
  • Попробуйте загрузить видео длительностью более 5 минут — должна появиться ошибка о длительности.
  • Загрузите видео неподдерживаемого формата — получите соответствующее сообщение.
  • Проверьте в медиабиблиотеке, что запрещённые файлы не загрузились.

Частые ошибки и как их исправить

  • Ошибка: «ffprobe не найден»
    Убедитесь, что ffmpeg установлена, а путь к ffprobe доступен для PHP. Можно указать полный путь в команде, например /usr/bin/ffprobe.
  • Ограничение размера не работает
    Проверьте настройки PHP upload_max_filesize и post_max_size — они должны быть больше или равны вашему ограничению в коде.
  • Не срабатывает проверка длительности
    Убедитесь, что PHP может выполнять shell-команды, и что shell_exec не отключена в настройках сервера.

Практические советы по безопасности и производительности

  • Ограничивайте загрузку видео не только по размеру, но и по типу и длительности, чтобы избежать загрузки потенциально опасных или чрезмерно больших файлов.
  • Используйте CDN для отдачи видео, чтобы снизить нагрузку на основной сервер.
  • Кэшируйте медиаконтент и используйте lazy load для видео, чтобы улучшить скорость загрузки страниц.
  • Регулярно обновляйте серверное ПО и плагины, чтобы избежать уязвимостей при работе с файлами.

Сравнение способов ограничения видео в WordPress

МетодПреимуществаНедостатки
Ограничение PHP (upload_max_filesize)Простая настройка, работает на уровне сервераНе проверяет длительность, только размер
Фильтры WordPress (upload_size_limit)Гибкость, можно менять динамическиНе учитывает длительность видео
Проверка длительности через ffmpegТочная проверка длительности, предотвращает загрузку слишком длинных видеоТребует установки ffmpeg и разрешения на shell_exec
Как запретить скачивание видео в WooCommerce для неавторизованных пользователей
09.05.2026
Оптимизация базы данных WordPress для видео сайтов: практические советы и примеры
17.11.2025
Как создать собственный шорткод для видео в WordPress
21.11.2025
Как автоматизировать удалённую запись видео в WordPress
22.01.2026
Как настроить автозамену видео форматов в WordPress для лучшей совместимости
08.12.2025