Funciones auxiliares de vídeo

Las funciones que convierten la URL del vídeo de una lección en un reproductor, y las piezas que puedes usar por separado.

Renderizar el vídeo de una lección

pom_lms_get_lesson_video_markup( array $lesson_metas ): string

Devuelve el marcado completo del vídeo de una lección, a partir de los campos almacenados de la lección. Normaliza la URL, determina el proveedor, obtiene una miniatura, solicita los recursos de vídeo del tema y devuelve el reproductor que espera el tema actual.

Esta es la función que debes llamar si renderizas el vídeo de una lección en cualquier sitio que no sea la plantilla de la lección: un shortcode, una vista previa del curso, un diseño personalizado.

Devuelve una cadena vacía cuando la lección no tiene URL de vídeo.

Identificar el proveedor

pom_lms_get_lesson_video_source( string $video_url, string $video_source = '' ): string

Devuelve youtube, vimeo o una cadena vacía.

Determina la URL por sí misma, y solo recurre al tipo de vídeo almacenado cuando la URL no es reconocible. Ese orden es deliberado: la URL es la evidencia, el tipo almacenado es la pista.

Un retorno vacío no significa que el vídeo sea inutilizable; significa que no es ni YouTube ni Vimeo, y el renderizador recurre a un marco embebido simple.

Extraer identificadores

pom_lms_extract_youtube_video_id( string $video_url ): string
pom_lms_extract_vimeo_video_id( string $video_url ): string

Devuelve el identificador del vídeo, o una cadena vacía si la URL no es de ese proveedor.

El extractor de YouTube entiende las formas que los editores realmente pegan: URL de visualización, enlaces cortos youtu.be, URL de embebido, shorts y URL en vivo. Por eso el campo de la lección acepta una URL copiada de la barra del navegador en lugar de exigir un código de embebido.

Miniaturas

pom_lms_get_lesson_video_thumbnail_url( string $video_url, string $video_source ): string

Devuelve una URL de miniatura para el vídeo, o una cadena vacía.

Las miniaturas de YouTube se derivan del identificador. Las miniaturas de Vimeo no se pueden derivar, así que se obtienen y se guardan en caché; la consulta no ocurre en cada renderizado de página.

Útil para construir tarjetas de curso y listas de lecciones que muestran un fotograma sin establecer una imagen destacada en cada lección.

Proveedores no reconocidos

Una URL que no es ni de YouTube ni de Vimeo se embebe en un marco simple que apunta a la URL que proporcionaste.

Es una verdadera vía de escape: un reproductor autoalojado, una plataforma de vídeo empresarial, un servicio interno, con una condición: la URL debe ser embebible. Un enlace a una página que se niega a ser enmarcada produce un cuadro vacío.

Prueba cualquier proveedor no estándar en el front-end antes de publicar lecciones con él.

Acceso primero

Estas funciones auxiliares renderizan vídeo. No comprueban el acceso.

if ( ! pom_lms_user_can_access_lesson( $lesson_id, $course_id ) ) {
    return '';
}

echo pom_lms_get_lesson_video_markup( $lesson_metas );

Renderizar un reproductor para una lección bloqueada publica la URL del vídeo a alguien que no debería tenerla. Consulta El contrato de control de acceso.

Privacidad del alojamiento de vídeo

El vídeo en sí lo sirve YouTube o Vimeo, que ven las peticiones de tus estudiantes. Los vídeos no listados no son privados, solo no listados: cualquiera con la URL puede verlos, haya comprado o no el curso.

Si el valor de un curso depende de que el vídeo sea inaccesible, alojarlo en un servicio de vídeo público es la arquitectura equivocada, y ningún ajuste de acceso en POM LMS cambia eso.

Leer los campos de la lección

$lesson_metas = pom_lms_get_post_metas( $lesson_id );

Devuelve los campos almacenados de la lección como un array, que es lo que espera la función auxiliar de marcado. Úsala en lugar de leer el almacenamiento directamente, para que tu código siga funcionando si cambia la estructura del almacenamiento.