В некоторых проектах на WordPress возникает необходимость запускать воспроизведение видео по удалённой команде или событию. Это полезно, например, для синхронизации видео с внешними процессами, интерактивных презентаций или управления плеером через API. В этом материале мы разберём, как реализовать такую функциональность без сторонних сервисов, используя нативные возможности WordPress, JavaScript и REST API.
Почему важен запуск видео по удалённой команде
В стандартной ситуации видео на сайте начинают воспроизводиться при взаимодействии пользователя — клике, скролле или автозапуске. Однако в некоторых сценариях требуется запускать видео по команде, которая приходит с сервера или другого пользователя. Например, при проведении вебинаров, онлайн-курсов, интерактивных видео презентаций, когда важно синхронизировать начало видео с внешним событием.
Без реализации удалённого управления плеером вы ограничены классическим управлением, что снижает интерактивность и гибкость сайта. Поэтому давайте посмотрим, как можно реализовать запуск видео по удалённой команде на WordPress.
Использование REST API WordPress для получения команды запуска
Первый шаг — создать конечную точку REST API, которая будет возвращать состояние запуска видео. Так мы можем имитировать удалённую команду, которую клиент будет опрашивать.
Создаём REST API endpoint
Добавьте в functions.php вашей темы или в кастомный плагин следующий код:
add_action('rest_api_init', function () {
register_rest_route('omni-video/v1', '/play-command', array(
'methods' => 'GET',
'callback' => 'omni_video_get_play_command',
));
});
function omni_video_get_play_command() {
// Здесь можно реализовать логику проверки внешних условий
// Для теста просто возвращаем true
return rest_ensure_response(array('play' => true));
}Этот endpoint доступен по адресу /wp-json/omni-video/v1/play-command и возвращает JSON с ключом play.
JavaScript для опроса сервера и запуска видео
Теперь на стороне клиента нужно периодически опрашивать наш endpoint и запускать видео, если команда пришла.
Пример скрипта
document.addEventListener('DOMContentLoaded', function () {
const video = document.querySelector('video#omni-video-player');
if (!video) return;
async function checkPlayCommand() {
try {
const response = await fetch('/wp-json/omni-video/v1/play-command');
const data = await response.json();
if (data.play && video.paused) {
video.play();
}
} catch (error) {
console.error('Ошибка при запросе play-команды:', error);
}
}
// Проверяем команду каждые 3 секунды
setInterval(checkPlayCommand, 3000);
});В этом примере видео с id omni-video-player будет запускаться автоматически, когда сервер отдаст {"play": true}.
Добавление видео на страницу
Для примера добавим видео в шаблон или через редактор с нужным id:
<video id="omni-video-player" width="640" height="360" controls preload="metadata">
<source src="https://example.com/video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>Обязательно указывайте id, чтобы скрипт мог найти нужный элемент.
Расширение функционала: запуск и пауза по командам
Можно расширить API и клиент, чтобы поддерживать не только запуск, но и паузу, перемотку или смену видео. Для этого изменим endpoint и добавим в ответ поле action с возможными значениями play, pause, stop и т.д.
function omni_video_get_play_command() {
// Логика выбора команды
return rest_ensure_response(array('action' => 'play'));
}И на клиенте:
switch(data.action) {
case 'play':
if (video.paused) video.play();
break;
case 'pause':
if (!video.paused) video.pause();
break;
case 'stop':
video.pause();
video.currentTime = 0;
break;
}Практические советы и рекомендации
- Используйте nonce и проверку прав в REST API, если команда должна быть защищена.
- Не злоупотребляйте частым опросом, чтобы не создавать нагрузку на сервер.
- Для более сложных сценариев рассмотрите WebSocket-соединения, например, через библиотеку Ratchet и плагин WP WebSockets.
- Проверяйте поддержку автозапуска видео в браузерах: некоторые блокируют запуск без взаимодействия пользователя.
Интеграция с плагином OmniVideo для WordPress
Если вы используете плагин OmniVideo, то данную логику можно встроить в кастомные шаблоны плеера, используя встроенные хуки и API плагина для расширения функционала.
Например, можно добавить собственный JavaScript через настройки плагина, который будет реализовывать описанный механизм запуска видео по удалённой команде.
Заключение
Запуск видео по удалённой команде в WordPress — задача, решаемая с помощью REST API и клиентского JavaScript. Такой подход даёт гибкость и расширяемость для интерактивных видео проектов. Используйте приведённые примеры как базу для своих решений и адаптируйте их под конкретные задачи.