Как запретить вставку видео в WooCommerce для неавторизованных пользователей

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

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

Проблема появляется, когда видео встроено в описания товаров или на странице товара через шорткоды или HTML-вставки — любой посетитель может просмотреть или скопировать ссылку, если доступ не ограничен.

Как определить, что видео не защищено

  • Видео доступно и воспроизводится без входа на сайт.
  • URL видео можно получить из исходного кода страницы.
  • Пользователи без авторизации способны видеть видео в описаниях товаров.

Пошаговое решение: запретить вывод видео для гостей в WooCommerce

1. Добавление проверки авторизации вокруг видео

Самый надежный способ — обернуть видео-контент в условие, которое проверит, залогинен ли пользователь. Если нет — показать сообщение с предложением войти или зарегистрироваться.

function restrict_video_for_guests($content) {
    if (is_product()) { // только на страницах товаров
        if (!is_user_logged_in()) {
            // Ищем видео-теги и заменяем их на сообщение
            $content = preg_replace('/<iframe.*?<\/iframe>|<video.*?<\/video>/is',
            '<p>Видео доступно только для зарегистрированных пользователей. Пожалуйста, <a href="'.wp_login_url(get_permalink()).'">войдите</a> или <a href="'.wp_registration_url().'">зарегистрируйтесь</a>.</p>', $content);
        }
    }
    return $content;
}
add_filter('the_content', 'restrict_video_for_guests', 20);

2. Запрет на прямой доступ к видеофайлам (если видео хранится локально)

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

# Запретить прямой доступ к видеофайлам для неавторизованных
<FilesMatch "\.(mp4|webm|ogg)$">
  RewriteEngine On
  RewriteCond %{HTTP_COOKIE} !wordpress_logged_in_
  RewriteRule .* - [F]
</FilesMatch>

Этот код блокирует доступ к видеофайлам, если HTTP_COOKIE не содержит куки авторизации WordPress.

3. Использование плагинов для защиты видео (альтернативный вариант)

Если не хочется писать код, можно использовать плагины для защиты видео, например, OmniVideo, который поддерживает ограничение по ролям пользователей.

Проверка результата после внедрения

  • Откройте страницу товара в режиме инкогнито или из браузера, где не выполнен вход — видео должно быть заменено на сообщение с предложением авторизации.
  • Войдите под учетной записью — видео должно отображаться корректно.
  • Попробуйте напрямую перейти по URL видеофайла (если локальное хранение) — должен быть отказ в доступе (403 ошибка).

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

  • Видео не скрывается для гостей. Причина: фильтр the_content срабатывает слишком рано или поздно, либо видео вставлено не через контент (например, отдельным плеером в шаблоне). Решение: убедитесь, что фильтр подключен с приоритетом 20 или выше и проверьте, как выводится видео.
  • Появляется ошибка регулярного выражения в preg_replace. Причина: сложный HTML видео, вложенные теги. Решение: используйте более точные парсеры, например, DOMDocument, или плагин с готовыми решениями.
  • Прямой доступ к видеофайлам не блокируется. Причина: сервер не поддерживает .htaccess или правило не корректно. Решение: настройте серверные правила (nginx, Apache) или перенесите видео в защищенное облако.

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

  • Не храните видеофайлы в общедоступных папках без ограничений доступа.
  • Используйте CDN с поддержкой токенов доступа для видео, чтобы ограничить время доступа.
  • При большом количестве товаров и видео обрабатывайте вывод через кеширование, но не кешируйте страницы для незалогиненных пользователей, чтобы не показывать видео случайно.
  • Для защиты можно использовать временные ссылки на видео (signed URLs), если видео хранится на внешних сервисах.

Сравнение вариантов ограничения видео в WooCommerce

МетодПлюсыМинусы
PHP-фильтр the_content с проверкой is_user_logged_in()Легко реализовать, гибко настраиваетсяНе работает, если видео выводится вне контента
Серверные правила в .htaccessНадежно блокирует прямой доступСложно настроить, зависит от сервера
Плагины защиты видео (например, OmniVideo)Полноценные функции, удобный интерфейсЗависимость от стороннего софта, возможны накладные расходы
Как разрешить просмотр видео в WooCommerce только для авторизованных пользователей
03.05.2026
Как запретить вставку видео в WooCommerce для неавторизованных пользователей
31.05.2026
Как избежать проблем при удалённом управлении видео в WordPress
14.01.2026
Как запретить вставку видео в WooCommerce для неавторизованных пользователей
28.04.2026
Как запретить вставку видео в WooCommerce для неавторизованных пользователей
06.05.2026