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

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

В WooCommerce часто возникает задача ограничить просмотр видео товаров только зарегистрированным и вошедшим в систему пользователям. По умолчанию, если видео встроены в описание товара или выведены через шорткод, они доступны любому посетителю. Это создает риск нелегального распространения контента, снижения эксклюзивности и потери прибыли. Чтобы убедиться, что проблема именно в открытом доступе, проверьте:

  • Видно ли видео на странице товара без входа в аккаунт?
  • Используются ли стандартные методы вставки видео — например, через iframe или шорткод?
  • Нет ли активных плагинов, ограничивающих контент?

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

Пошаговое решение: ограничиваем видео для гостей в WooCommerce

1. Используем PHP для проверки статуса пользователя

Лучший способ — обернуть вывод видео в проверку “is_user_logged_in()”. Если пользователь не авторизован, показываем сообщение с предложением войти или зарегистрироваться.

2. Пример кода для вывода видео только авторизованным

function wps_restrict_video_to_logged_in( $content ) {
    if ( is_product() ) {
        if ( ! is_user_logged_in() ) {
            // Заменяем видео на сообщение
            $content = preg_replace('/<iframe.*?src=".*?".*?</iframe>/is', '<p>Для просмотра видео необходимо <a href="' . wp_login_url( get_permalink() ) . '">войти в аккаунт</a>.</p>', $content);
        }
    }
    return $content;
}
add_filter( 'the_content', 'wps_restrict_video_to_logged_in', 20 );

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

3. Ограничение видео, добавленных через шорткод

Если видео выводятся через шорткод, проще прописать условие внутри функции шорткода:

function my_video_shortcode( $atts ) {
    if ( ! is_user_logged_in() ) {
        return '<p>Только для зарегистрированных пользователей. Пожалуйста, <a href="' . wp_login_url() . '">войдите</a>.</p>';
    }
    $video_url = esc_url( $atts['url'] ?? '' );
    if ( empty( $video_url ) ) {
        return '';
    }
    return '<video controls><source src="' . $video_url . '" type="video/mp4"></video>';
}
add_shortcode( 'restricted_video', 'my_video_shortcode' );

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

  • Откройте страницу товара в режиме инкогнито или выйдите из аккаунта — видео должны быть заменены на сообщение с предложением войти.
  • Войдите под зарегистрированным пользователем — видео должны отображаться корректно.
  • Проверьте все варианты вставки видео на сайте — iframe, встроенные HTML5-видео, шорткоды.
  • Убедитесь, что не осталось обходных путей для просмотра видео без авторизации.

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

  • Видео не скрываются для гостей: возможно, фильтр the_content не применяется к нужному месту, например, если видео выводится через кастомный шаблон. Решение — добавить проверку и ограничение именно в шаблон или через хуки, которые используются.
  • Регулярное выражение не заменяет все видео: если видео вставлены не через iframe, а через другие теги или скрипты, регулярное выражение нужно адаптировать, либо использовать другой способ ограничения.
  • Пользователи видят только сообщение, даже после авторизации: проверьте, не кешируется ли страница для всех пользователей, отключите кеширование на этой странице или настройте исключения.

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

  • Не полагайтесь только на фронтенд-ограничения (например, CSS или JS скрытие), так как видео URL остаются доступными в исходном коде.
  • Для защиты видео-файлов используйте приватные ссылки или храните видео на защищенных внешних серверах.
  • Если видео хранятся локально, настройте .htaccess или nginx для ограничения доступа по сессиям или рефереру.
  • Оптимизируйте регулярные выражения и фильтры, чтобы не снижать производительность сайта при большом количестве запросов.
  • Для сложных сценариев используйте плагин типа Clearfy Pro, который позволяет гибко настраивать ограничения и оптимизацию.

Сравнение подходов к ограничению видео доступа в WooCommerce

МетодПлюсыМинусы
PHP-фильтр the_content с заменой iframeПростая реализация, работает без плагиновНе подходит, если видео выводятся вне контента
Ограничение внутри шорткодаКонтроль только над видео в шорткодахНе охватывает видео, вставленные напрямую в редактор
Использование плагинов для ограничения контентаРасширенные возможности, гибкие настройкиДополнительная нагрузка, возможна плата за лицензии
Настройка защиты сервером (например, .htaccess)Надежная защита файловСложнее в настройке, требует навыков администрирования
Как автоматически отключать автозапуск видео в WordPress для всех браузеров
18.01.2026
Как установить автоматическую проверку видео на плагиат в WordPress
27.02.2026
Как автоматизировать удалённый запуск видео в WordPress
10.01.2026
Как отладить проблемы с видеоплеером в WordPress
16.03.2026
Авторизация и защита видео контента в WordPress
24.03.2026