Диагностика проблемы: почему видео могут вставляться неавторизованными пользователями
В интернет-магазинах на WooCommerce часто возникает необходимость ограничить загрузку или вставку видео только для авторизованных пользователей. Если это не настроить, любой посетитель может вставить видео в описание товара, отзывы или комментарии, что нарушает политику сайта и повышает риск спама или некачественного контента.
Проверьте, есть ли у неавторизованных пользователей возможность вставлять видео в редакторе товара или комментариях. Для этого:
- Откройте страницу добавления или редактирования товара в режиме неавторизованного пользователя (через гостевой браузер или инкогнито);
- Проверьте наличие кнопок вставки видео в визуальном редакторе;
- Проверьте, работают ли короткие коды или iframe с видео.
Шаги по запрету вставки видео в WooCommerce для гостей
1. Отключаем возможность вставки видео в визуальном редакторе для неавторизованных
Добавьте следующий код в functions.php вашей темы или в кастомный плагин:
function disable_video_buttons_for_guests( $buttons ) {
if ( ! is_user_logged_in() ) {
// Убираем кнопки вставки медиа и видео
$remove_buttons = array('media', 'video', 'embed');
foreach ( $remove_buttons as $button ) {
$key = array_search( $button, $buttons );
if ( $key !== false ) {
unset( $buttons[$key] );
}
}
}
return $buttons;
}
add_filter( 'mce_buttons', 'disable_video_buttons_for_guests' );Это отключит основные кнопки для вставки видео в классическом редакторе TinyMCE для гостей.
2. Фильтрация видео в содержимом товара и комментариях
Чтобы дополнительно запретить вставку видео через iframe, embed или короткие коды, используйте фильтр, удаляющий теги видео при сохранении для гостей:
function strip_video_tags_from_content( $content ) {
if ( ! is_user_logged_in() ) {
// Удаляем iframe и embed теги
$content = preg_replace('#<(iframe|embed)[^>]*>.*?</\1>#is', '', $content);
// Удаляем шорткоды video и embed
$content = preg_replace('/\[(video|embed)[^\]]*\](.*?)\[\/\1\]/is', '', $content);
}
return $content;
}
add_filter( 'content_save_pre', 'strip_video_tags_from_content' );
add_filter( 'comment_save_pre', 'strip_video_tags_from_content' );3. Ограничиваем загрузку видеофайлов через медиабиблиотеку
Если используется возможность загрузки видео через медиабиблиотеку, стоит ограничить её для гостей. Добавьте в functions.php:
function restrict_media_uploads_for_guests() {
if ( ! is_user_logged_in() ) {
wp_die( 'Загрузка файлов доступна только зарегистрированным пользователям.' );
}
}
add_action( 'pre-upload-ui', 'restrict_media_uploads_for_guests' );Проверка результата после внедрения
- Зайдите на сайт в режиме инкогнито или без авторизации;
- Попробуйте вставить видео через редактор товара, комментарии или плагин для видео;
- Попытайтесь загрузить видео через медиабиблиотеку;
- Убедитесь, что кнопки и функции вставки видео отсутствуют или не работают;
- Попробуйте вставить вручную iframe или шорткод с видео и сохранить — видео не должно отображаться.
Частые ошибки и способы их исправления
- Видео всё равно вставляется через визуальный редактор: Возможно, используется блоковый редактор Gutenberg или сторонний плагин. Для Gutenberg потребуется отключать блоки видео с помощью
allowed_block_types_allили фильтров плагина. - Пользователи загружают видеофайлы напрямую через FTP или сторонние инструменты: Проверьте права доступа на сервере и настройте ограничения на уровне хостинга.
- Удаление iframe и шорткодов не срабатывает: Убедитесь, что фильтры применяются к нужным хукам и что при сохранении контента нет кэширования.
Практические советы по безопасности и производительности
- Используйте фильтрацию контента, чтобы избежать внедрения вредоносного кода через iframe.
- Отключайте загрузку видео и медиафайлов для гостей, чтобы снизить нагрузку на сервер и избежать спама.
- Для более надежной защиты рассмотрите установку плагинов безопасности, которые блокируют вредоносные вставки в комментарии и форму товаров.
- Если используете блоковый редактор, контролируйте доступ к блокам видео через фильтры или роль пользователя.
Сравнение методов запрета вставки видео
| Метод | Преимущества | Недостатки |
|---|---|---|
| Отключение кнопок в TinyMCE | Простое и быстрое решение для классического редактора | Не работает в Gutenberg и сторонних конструкторах |
| Фильтрация контента (iframe, шорткоды) | Защищает от вставки вручную добавленного видео | Может влиять на производительность при большом объёме контента |
| Ограничение загрузки в медиабиблиотеке | Запрещает загрузку видеофайлов, снижая риск злоупотреблений | Не защищает от внешних вставок видео из URL |