Si trabajas con Tutor LMS y necesitas inscribir automáticamente a usuarios en cursos, este artículo te mostrará cómo hacerlo mediante una función personalizada en WordPress. Tutor LMS utiliza el tipo de post tutor_enrolled
para registrar las inscripciones.
En este tutorial, vamos a crear una función que te permitirá inscribir a un usuario en un curso específico utilizando el ID del usuario y el ID del curso.
Código de la función para inscribir a un usuario
Aquí tienes el código de la función user_enroll_course
, que se encargará de inscribir a un usuario en un curso:
/**
* Inscribe a un usuario en un curso de Tutor LMS.
*
* Esta función crea una entrada en el tipo de post 'tutor_enrolled', que indica
* que un usuario se ha inscrito en un curso específico. La entrada incluye un título
* con la fecha y hora actuales y está asociada al usuario y al curso indicados.
*
* @param int $user_id ID del usuario que se inscribirá en el curso.
* @param int $course_id ID del curso al que se inscribirá el usuario.
* @return int|WP_Error El ID del post recién creado o un objeto WP_Error en caso de fallo.
*/
function user_enroll_course($user_id, $course_id) {
// Crear el título del post
$title = sprintf(
__('Curso Inscrito – %s @ %s', 'tutor-pro'),
date_i18n(get_option('date_format')),
date_i18n(get_option('time_format'))
);
// Datos del post para la inscripción
$enroll_data = array(
'post_type' => 'tutor_enrolled', // Tipo de post personalizado para la inscripción
'post_title' => $title, // Título del post que incluye la fecha y hora
'post_status' => 'completed', // Si, debe ser completed, así funciona Tutor LMS
'post_author' => $user_id, // ID del usuario que se inscribe
'post_parent' => $course_id, // ID del curso en el que el usuario se inscribe
);
// Insertar el post en la base de datos
$is_enrolled = wp_insert_post($enroll_data);
// Retornar el ID del post recién creado o un error si la inserción falló
return $is_enrolled;
}
¿Cómo funciona?
- $user_id: Es el ID del usuario que deseas inscribir en el curso. Debes asegurarte de que este usuario existe en tu base de datos.
- $course_id: Es el ID del curso de Tutor LMS en el que deseas inscribir al usuario. El curso debe estar publicado y activo.
- Título personalizado: El título del post de inscripción incluye la fecha y hora actuales, lo que facilita el seguimiento de cuándo se realizó la inscripción.
- Tipo de post ‘tutor_enrolled’: Tutor LMS utiliza el tipo de post personalizado
tutor_enrolled
para registrar todas las inscripciones de los usuarios. Esta función crea un post de este tipo, asociando al usuario con el curso. - Estado del post: El estado del post está marcado como
completed
, lo que indica que la inscripción ha sido exitosa. Normalmente, querrías usar el estadopublish
pero en este caso es necesario hacerlo así concompleted
. - Inserción en la base de datos: La función
wp_insert_post()
es la que finalmente guarda la información en la base de datos de WordPress. Si la inserción es exitosa, la función devolverá el ID del post recién creado. Si hay un error, retornará un objeto de tipoWP_Error
.
Ejemplo de uso de la función
Supongamos que tienes un curso con el ID 123
y un usuario con el ID 456
. Para inscribir a este usuario en el curso, simplemente tendrías que llamar a la función de la siguiente manera:
$user_id = 456;
$course_id = 123;
$enrollment_result = user_enroll_course($user_id, $course_id);
if (is_wp_error($enrollment_result)) {
echo 'Error al inscribir al usuario: ' . $enrollment_result->get_error_message();
} else {
echo 'Usuario inscrito correctamente. ID de inscripción: ' . $enrollment_result;
}
En este ejemplo, si la inscripción se realiza correctamente, la función devolverá el ID del post de inscripción. Si ocurre algún error, el mensaje de error se mostrará en pantalla.
¿Por qué inscribir usuarios automáticamente?
Hay diversas situaciones en las que puede ser útil automatizar el proceso de inscripción. Por ejemplo:
- Cuando un usuario compra un curso en WooCommerce y deseas inscribirlo automáticamente.
- Si quieres inscribir a los usuarios en cursos gratuitos después de que se registren en tu sitio.
- O, en un caso más específico, para crear promociones donde inscribes a usuarios en cursos como parte de un incentivo.
La función que vamos a desarrollar utiliza el sistema de posts personalizados de WordPress, donde Tutor LMS registra la información de las inscripciones de los usuarios a los cursos.