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

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

В стандартной установке WooCommerce и WordPress пользователи с возможностью оставлять отзывы могут вставлять ссылки и HTML-код, включая видео. Это создает риск, что неавторизованные пользователи вставят нежелательный или вредоносный видеоконтент, что влияет на безопасность и качество отзывов.

Диагностика проблемы

Чтобы проверить, действительно ли неавторизованные пользователи могут вставлять видео в отзывы, выполните следующие шаги:

  • Отключите авторизацию на сайте или откройте форму отзыва для гостей.
  • Попробуйте вставить в поле отзыва iframe или ссылку на видео (например, YouTube embed).
  • Отправьте отзыв и проверьте, отобразился ли видео-контент на странице товара.

Если видео отображается, значит, ограничение на вставку видео для гостей отсутствует, и требуется доработка.

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

Реализуем фильтрацию содержимого отзывов, удаляя теги <iframe> и <video> для гостей, оставляя возможность вставлять видео только авторизованным пользователям.

1. Добавляем фильтр на обработку содержимого комментария

add_filter('preprocess_comment', 'restrict_video_in_reviews_for_guests');
function restrict_video_in_reviews_for_guests($commentdata) {
    if (!is_user_logged_in() && isset($commentdata['comment_content'])) {
        // Удаляем теги iframe и video из текста комментария
        $commentdata['comment_content'] = preg_replace('#<iframe.*?</iframe>#is', '', $commentdata['comment_content']);
        $commentdata['comment_content'] = preg_replace('#<video.*?</video>#is', '', $commentdata['comment_content']);
    }
    return $commentdata;
}

2. Фильтрация при выводе отзывов (на всякий случай)

Чтобы исключить обход ограничения с помощью JavaScript или других способов, дополнительно фильтруем вывод отзывов:

add_filter('comment_text', 'filter_video_tags_in_review_output', 10, 3);
function filter_video_tags_in_review_output($comment_text, $comment, $args) {
    if (!is_user_logged_in()) {
        $comment_text = preg_replace('#<iframe.*?</iframe>#is', '', $comment_text);
        $comment_text = preg_replace('#<video.*?</video>#is', '', $comment_text);
    }
    return $comment_text;
}

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

  • Выйдите из аккаунта и попробуйте оставить отзыв с видео (iframe или video тег). Видео должно быть удалено из содержимого.
  • Авторизуйтесь и повторите попытку — видео должно отображаться без изменений.
  • Проверьте исходный код страницы с отзывами, чтобы убедиться, что теги видео отсутствуют у гостей.

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

  • Видео не удаляется из отзыва: проверьте, что фильтр preprocess_comment добавлен правильно и нет конфликтов с другими плагинами, которые могут переписывать комментарии.
  • Удаляется весь HTML: убедитесь, что используете только удаление конкретных тегов, а не всю разметку.
  • Видео пропадает и для авторизованных: проверьте условие !is_user_logged_in() и его корректность.

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

  • Для более надежной фильтрации можно использовать библиотеку HTMLPurifier или встроенную функцию wp_kses() с разрешенным набором тегов.
  • Ограничение вставки видео для гостей снижает риск XSS-атак и загрузки вредоносного контента.
  • Для улучшения UX можно добавить сообщение об ошибке или предупреждение при попытке вставить видео без авторизации через JavaScript в форме отзыва.

Сравнение вариантов реализации ограничения вставки видео в отзывах WooCommerce

МетодОписаниеПлюсыМинусы
Фильтрация на preprocess_commentУдаление тегов видео из комментария перед сохранениемПростота, работает на сервереНе исключает обход при выводе без фильтрации
Фильтрация на comment_textУдаление тегов при выводе комментариевЗащищает от обхода, дополнительно фильтрует выводДополнительная нагрузка на вывод
Использование HTMLPurifier/ wp_ksesПолная очистка и разрешение только безопасных теговМаксимальная безопасностьСложнее настроить, требует дополнительные библиотеки
Как автоматически добавить видеокапчу в WordPress для защиты форм
31.03.2026
Как удалить старые версии постов WordPress без плагинов
30.11.2025
Как удалить неиспользуемые виджеты в WordPress
08.12.2025
Как добавить автоматическое удаление старых видео из медиабиблиотеки WordPress
06.02.2026
Как автоматизировать конвертацию видео при загрузке в WordPress
14.01.2026