El asistente de acceso al curso
pom_lms_user_can_access_course( int $course_id ): bool
Devuelve si el usuario actual puede acceder a un curso.
Qué evalúa
En este orden, deteniéndose en el primero que se aplique:
| Paso | Condición | Resultado |
|---|---|---|
| 1 | El curso requiere iniciar sesión y el visitante no ha iniciado sesión | false |
| 2 | El curso tiene una regla de permiso | Lo que indique la regla |
| 3 | El curso está marcado como de pago | Si el usuario tiene una compra válida |
| 4 | Nada de lo anterior | true |
Los pasos 2 y 3 no se combinan. Un curso con una regla nunca llega a la comprobación de compra, sea cual sea su indicador de pago, un detalle que conviene recordar cuando un curso se comporta de forma inesperada.
Cómo usarlo
if ( ! function_exists( 'pom_lms_user_can_access_course' ) ) {
return '';
}
if ( ! pom_lms_user_can_access_course( $course_id ) ) {
return '';
}
// Safe to render course content.
Visitantes sin sesión iniciada
El asistente los gestiona. Un curso sin requisito de inicio de sesión, sin regla y sin indicador de pago devuelve true para los visitantes anónimos, que es exactamente lo que debería hacer un curso público.
No añadas tu propia comprobación is_user_logged_in() delante de él: eso cambia el comportamiento de los cursos abiertos.
Solo el usuario actual
No hay parámetro de ID de usuario. El asistente responde para la solicitud en la que se llama.
Eso lo descarta para tareas programadas, informes masivos y generación de correos electrónicos. Si te encuentras queriendo recorrer usuarios en bucle y hacer esta pregunta, detente: no hay una forma compatible de hacerlo, y reconstruir la respuesta a partir de los datos subyacentes reimplementa la precedencia que el asistente existe para gestionar.
Usa el asistente de lecciones para las lecciones
El acceso al curso no es el acceso a la lección. Las lecciones pueden tener su propia regla de permiso y pueden marcarse como vistas previas, de modo que una lección puede estar abierta cuando el curso está cerrado, o cerrada cuando el curso está abierto.
Para el contenido de las lecciones, llama siempre a el asistente de acceso a lecciones.
Coste
El asistente es barato en los casos habituales: un par de lecturas de meta y, como mucho, una evaluación de regla.
El caso costoso es un curso de pago, donde la comprobación de compra inspecciona los pedidos del cliente. Si estás listando muchos cursos en una sola solicitud, espera ese coste por cada curso de pago.
Llámalo una vez por curso y por solicitud y guarda el resultado en una variable local en lugar de llamarlo repetidamente en una plantilla.
Usos típicos
Un shortcode que inserta material del curso:
if ( ! pom_lms_user_can_access_course( $course_id ) ) {
return '';
}
Filtrar una lista de cursos según lo que un visitante puede abrir:
$visible = array_filter( $course_ids, 'pom_lms_user_can_access_course' );
Eso es lo que hace la tabla My courses, y es la razón por la que un curso inaccesible está ausente en lugar de aparecer atenuado.
Decidir si mostrar un botón de compra: inviértelo. Un visitante que no puede acceder a un curso de pago es quien debería ver el enlace del producto.
Lo que no te dice
- Por qué se concedió o denegó el acceso.
- Si el usuario tendrá acceso más adelante, o lo tuvo antes.
- Nada sobre el progreso.