Hay algunas tareas de estas que se convierten en titánicas y no sabes muy bien el porqué y esta lo ha sido. Así que traigo este post para que otra persona que quiera montar este sistema no tenga que dar tantas vueltas y poder hacerlo a la primera :)
Hace unos meses que estamos preparando cursos bajo la marca escueladeeuropa. Los cursos la idea es montarlos en el LMS Moodle (learning management system), pero luego quedaba la cosa como los vendíamos… nos dijimos, sería chulo que los cursos se vendiesen solos a través de la página web hecha con wordpress… y ahí empezó la carrera.
Conectar wordpress y moodle es posible gracias a dos plugins, el primero edwiser y el segundo lmsace. El primero es mucho más intuitivo pero a la que quieres empezar a conectarlo con woocommerce, paga. El segundo… ¡ay el segundo! ¡vamos a verlo!
Concepto
La idea es que en tu moodle tienes unos cursos y en tu wordpress el woocommerce. Para conectar moodle y wordpress es necesario primero de todo crear los usuarios en wordpress que luego se crearán automáticamente en moodle. Esto se llama “user enrolment”.
Para conectar ambos programas será necesario instalar 1 plugin en wordpress y (atención) 2 en moodle! todo lo que necesitas saber lo encontrarás en la wiki de lmsace.
Moodle
Empezamos con moodle, será necesario instalar los dos plugins, lmsace-connect-moodle y lmsace-connect-moodleauth. El segundo aunque en la wiki pone que es opcional, hasta que no lo he instalado no funcionaba nada! aquí tienes los ficheros zip que debes descargarte:
A continuación a moodle, vas a Admin > Plugins > Install plugins y subes los dos ficheros zip y sigues las instrucciones.
Lo siguiente será generar un token para conectar el wordpress con el moodle desde Admin > Plugins > Local plugins > LMSACE Connect y pulsas a la pestaña Generate token.
Ahora lo siguiente será permitir que los usuarios con rol estudiante puedan hacer login por el protocolo REST. Para ello será necesario ir a Admin > Users > Permissions > Define Roles > Student (engranaje) y buscar “webservice/rest:use” y decirle “Allow”. Luego guardar.
Ahora cogemos el token que nos ha generado el plugin y vamos al wordpress
WordPress
En wordpress he instalado los plugins Woocommerce, user registration y los he configurado.
En woocommerce en Ajustes > Cuentas y privacidad, he desmarcado la casillas referentes a “pago como invitado”. Aquí dejo una captura de pantalla para ver como debe quedar
A continuación, descargo e instalo el plugin lmsace para wordpress y lo instalo (github, zip).
Una vez instalado será necesario ir a LMSACE Connect e introducir la URL del moodle y el token que nos ha generado y darle al botón “connect”. Si no funciona, es posible que haya un problema de comunicación o otro que me ha hecho perder una gran cantidad de tiempo que el plugin funciona máximo en la versión PHP8.1, a partir de la versión PHP8.2 las funciones que usa el plugin están deprecated y no funcionan. La configuración la estoy haciendo con WordPress 6.3. He dejado en todo momento los enlaces a github del proyecto que parece que está activo (por lo menos al momento de hacer este post la versión 2.0 de los plugins se publicó hace 1 mes).
Una vez sale todo verde, será necesario ir a la pestaña LMSACE Connect > Import courses, seleccionamos los cursos que queramos importar y recomiendo marcar todas las casillas de abajo. Finalmente “Start import courses”.
Ahora los cursos importados aparecerán en Productos. Aquí será necesario añadir un precio para cada uno de ellos.
LMSACE tiene una tercera pestaña de configuración del comportamiento de creación de los usuarios, “General setup” que la documentación de la wiki indica en dejar en suspend los usuarios que cancelen los cursos y asignarlos al rol “student” (que es el que le hemos dado permisos para hacer login con REST).
SSO Activation Method sirve para indicar en qué momento se crea el usuario en el moodle, si al momento de crear el usuario en el wordpress o en el momento de validar el primer curso. En mi caso lo he dejado en la opción “Login on WP” que permite activar la casilla “Redirectless login” que te da la opción según he entendido/visto que una vez pulsado el enlace para acceder al curso desde wordpress, te permite abrir más pestañas con este login.
Luego está la opción “Create users in Moodle on new registration” que nos interesará activarla si queremos que los usuarios que hayan comprado un curso en el wodpress puedan hacer login al moodle.
Finalmente está la última opción que me genera bastante confusión y no sé si lo que he comentado de permitir abrir varias pestañas es de aquí (en manual) o de “Redirectless login”. Disculpadme que aún no entiendo muy bien como funciona esta parte y cuando se aplican las configuraciones si al configurar esto o al vincular el usuario a un curso.
Comprar un curso y proceso de login
Esta parte aún no la tengo muy clara pero tal como lo tengo ahora la cosa va así:
1. Registro del usuario El usuario se registra con la página que hayamos definido con el plugin “User registration” que nos pedirá crear un formulario de registro. En mi caso he creado una página con el slug “registro” con este contenido [user_registration_form id=”422″]
2. Login Una vez el usuario ha hecho el registro, puede hacer login en la página de woocommerce. En mi caso con el slug “cuenta” con este contenido [woocommerce_my_account]. El plugin “User registration” también te da la opción de crear una página de login, pero me quedaré con la de woocommerce que contiene los enlaces que me interesan
3. Acceder a la tienda de cursos Una vez el usuario ha hecho login, puede ir a la página de la tienda (en mi caso he puesto el slug “tienda”) y añadir los productos al carrito. Aquí en la tienda de woocommerce tuve problemas con el plugin Elementor, a la que le ponía la etiqueta para la tienda woocommerce se rompía todo, así que he optado por un elemento de elementor pro para mostrar los productos de woocommerce por categorías y ha quedado bastante digno
4. Comprar curso Una vez el usuario compra un curso (para hacer la prueba he creado un voucher con el mismo precio del producto y así no ha saltado la pasarela de pago, en mi caso SumUp con el plugin SumUp Payment Gateway For WooCommerce). Me ha pedido los datos de facturación (que son un poco coñazo ahí y debo mirar si puedo replantearlo o usar los datos del perfil creado con el plugin “User registration”).
5. Validar curso (admin) Cuando el usuario ha hecho el pedido, este aparece en Woocommerce > pedidos en estado “Procesando” y a la que lo pongo en “Completado” se hace el enrol del usuario en el curso, es decir, se vincula el usuario al curso de moodle y se crea el usuario depende de la configuración que hayamos puesto en el LMSACE (2a pestaña).
6. Acceso curso Ahora el usuario, si va al slug que yo tengo como “cuenta”, podrá ir al apartado “My Courses” y ahí verá los cursos a los que está apuntado y un enlace que lo llevará al moodle.
Una cosa que no he conseguido de ninguna forma (de momento) es que el usuario que he creado con el wordpress pueda acceder al moodle y mirando la configuración del usuario, creo que no se va a poder y es necesario siempre acceder al moodle a través del login de wordpress. Para esta última cosa, me estoy planteando un plugin para ver la actividad de los usuarios y así ver gráficamente el movimiento que hay en la escuela de cursos.
Y hasta aquí mi experiencia! muy contenta de conseguir que funcionase todo, ahora a mejorar la usabilidad que tal como la tengo es necesario un curso y mi idea es que los usuarios accedan a los cursos sin tener que darles un curso de como acceder a los cursos! Espero que en los próximos días vaya viendo mas claro como funciona el juguete.
Espero que os haya sido de ayuda! :)
PS: He dejado un issue al github del plugin con mis dudas.