Владельцам сайтов с видео-контентом часто требуется организовать систему подписки, чтобы ограничивать доступ к видео только зарегистрированным или оплатившим пользователям. В этой статье мы подробно рассмотрим, как добавить подписку на видео в WordPress с использованием плагина OmniVideo и кастомного кода, чтобы обеспечить удобное и гибкое управление доступом.
Почему нужна подписка на видео в WordPress
Подписка позволяет монетизировать видео-контент, управлять доступом и собирать базу постоянных пользователей. Вместо открытого доступа вы ограничиваете просмотр видео, показывая его только тем, кто подписался или оплатил услугу.
Это особенно важно для образовательных порталов, видеокурсов, платных вебинаров и сервисов с эксклюзивным видео.
Для реализации подписки можно использовать готовые плагины, например, OmniVideo, который специализируется на видео и обладает функционалом интеграции с системой подписок и ролями пользователей.
Основные этапы добавления подписки на видео
Чтобы реализовать подписку, нужно:
- Создать структуру пользователей и ролей с ограничениями доступа.
- Настроить плеер и видео-контент с проверкой прав доступа.
- Добавить форму подписки с оплатой или регистрацию.
- Обеспечить защиту видео от несанкционированного доступа и скачивания.
Разберем эти этапы на практике с использованием OmniVideo и примерами кода.
Создаем пользовательские роли и права доступа
WordPress из коробки поддерживает роли, но для подписчиков стоит создать отдельную роль, например, video_subscriber. Это позволит гибко контролировать доступ.
function omni_video_register_roles() {
add_role('video_subscriber', 'Видео подписчик', array(
'read' => true,
'view_video_content' => true
));
}
add_action('init', 'omni_video_register_roles');
Здесь мы добавляем роль с правом view_video_content, которое будем проверять при выводе видео.
Проверяем доступ к видео в плеере OmniVideo
OmniVideo позволяет выводить видео через шорткод или PHP-функцию. Добавим проверку доступа в функцию вывода, чтобы показывать видео только подписчикам.
function omni_video_display_video_with_subscription( $video_id ) {
if ( current_user_can('view_video_content') ) {
echo do_shortcode('[omnivideo video_id="' . esc_attr($video_id) . '"]');
} else {
echo '<p>Для просмотра видео необходимо <a href="' . wp_login_url() . '">войти</a> или <a href="' . site_url('/register') . '">зарегистрироваться</a>.</p>';
}
}
Этот код можно вставлять в шаблоны или использовать в шорткодах, чтобы выводить видео по подписке.
Добавляем форму подписки и регистрацию
Для регистрации можно использовать стандартную страницу WordPress или плагин для регистрации пользователей. Для приема оплат — интегрировать WooCommerce или Easy Digital Downloads с расширениями для подписок.
OmniVideo хорошо сочетается с WooCommerce Subscriptions, что позволяет автоматически менять роль пользователя после оплаты.
Защита видео от скачивания и обхода
Чтобы минимизировать скачивание видео, используйте следующие методы:
- Включите в OmniVideo опцию защиты — отключение правого клика и отображение ссылок.
- Используйте потоковое видео (HLS или DASH) вместо прямых mp4-файлов.
- Добавьте проверку прав доступа на уровне сервера, например, через .htaccess или PHP.
Пример защиты потока в .htaccess (Apache):
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain\.ru/ [NC]
RewriteRule \.(mp4|m3u8|ts)$ - [F,L]
Это ограничит доступ к видеофайлам только с вашего сайта.
Интеграция OmniVideo с WooCommerce Subscriptions
Если вы хотите принимать оплату за подписку, то WooCommerce Subscriptions — идеальный выбор. После успешной оплаты пользователю можно автоматически назначать роль video_subscriber.
Для этого добавьте следующий код в functions.php вашей темы или в кастомный плагин:
function omni_video_woocommerce_subscription_role_change($user_id) {
$user = new WP_User($user_id);
$user->add_role('video_subscriber');
}
add_action('woocommerce_subscription_status_active', 'omni_video_woocommerce_subscription_role_change');
<Теперь после активации подписки пользователь получает доступ к видео.
Пример полного шорткода для видео по подписке
Создадим шорткод, который выводит видео с проверкой подписки:
function omni_video_shortcode_subscription($atts) {
$atts = shortcode_atts(array('id' => 0), $atts, 'omni_video_sub');
ob_start();
if ( current_user_can('view_video_content') ) {
echo do_shortcode('[omnivideo video_id="' . intval($atts['id']) . '"]');
} else {
echo '<p>Для просмотра видео нужно <a href="' . wp_login_url() . '">войти</a> или <a href="' . site_url('/register') . '">зарегистрироваться</a>.</p>';
}
return ob_get_clean();
}
add_shortcode('omni_video_sub', 'omni_video_shortcode_subscription');
Теперь в редакторе WordPress достаточно вставить [omni_video_sub id="123"], чтобы вывести видео с ID 123 с проверкой подписки.
Выводы и рекомендации
Добавление подписки на видео в WordPress — задача комплексная, но с помощью плагина OmniVideo и правильной настройки ролей и платежных систем можно реализовать удобный и надежный функционал.
Обязательно тестируйте работу подписки с разными ролями и устройствами, а также следите за защитой контента от скачивания.
Для расширения функционала можно дополнительно использовать плагин Clearfy Pro для оптимизации и безопасности сайта.