En este post os voy a contar una historia con una reflexión y os comentaré una serie de cambios que hice a finales de 2021 al implementar LMS con WordPress.
He sido usuario de LearnDash para LMS en WordPress durante muchos años y aún lo sigo siendo.
En 2014 toqué por primera vez LearnDash para un cliente y, acostumbrado como venía a Moodle, para mí fue un cambio brutal. Estaba habituado a Moodle desde hacía años y tenía claro que Moodle tenía problemas muy graves de UX de cara al usuario final.
Además, Moodle era demasiado pesado (y lo sigue siendo) y para la implementación de ciertos proyectos, como proyectos de “exámenes”, era como matar moscas a cañonazos.
Cuando descubrí LearnDash, los pagebuilders no eran como los actuales: no existía Elementor y el Visual Composer de ese momento aún no era compatible con muchos de los plugins comunes.
¿Quieres
recibir mis articulos?
No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.
No obstante, ya existían themes multipurpose en ThemeForest que eran compatibles con LearnDash y traían plantillas específicas para integrar LearnDash con una buena apariencia.
Esto hacía que la solución LearnDash + Pagebuilder no fuese tan flexible como actualmente, pero era lo que había en ese momento.
A lo largo de estos años he tocado cientos de instalaciones WordPress con LearnDash con distintas combinaciones y configuraciones.
Pero hasta 2021 llevaba unos años sin tener a nivel personal una instalación LearnDash propia, ya que en los últimos años me he alejado bastante del mundo del eLearning, a pesar de que es el sector donde empecé mi carrera profesional con 16 años.
El “problema” es que, después de 6 meses utilizando LearnDash de forma intensiva en la Academia WP Avanzado, me he dado cuenta de algo importante y me he puesto a analizar las instalaciones de algunos de mis clientes recurrentes.
Yo ya sabía que LearnDash, al final, no deja de ser un plugin que crea una serie de CPTs con custom-fields y que en base a eso nos deja mostrarlos en el front-end de una determinada forma. Pero es que me he dado cuenta de que, en el 90% de los casos, la mayoría de los LMS no necesitan un plugin de LMS como LearnDash.
Y hablo de un plugin LMS, como LearnDash, porque hay otros plugins mucho más simples que, con la solución que os voy a proponer en este post, dejan de ser soluciones eficientes por completo.
El problema de LearnDash, Tutor LMS, Sensei LMS, LearnPress y otros plugins LMS complejos para WordPress es que tienen muchísimas funcionalidades y, para que el webmaster pueda implementarlas fácilmente, hay requisitos que hacen que la instalación WordPress completa consuma muchos recursos.
Esto es un ejemplo con LearnDash:
LearnDash carga una serie de datos con cada visita (utilizando el parámetro autoload) guardados dentro de la tabla wp_options. El problema es que se cargan muchísimos datos que no son necesarios, ya que en la query van datos de todos los usuarios y de contenidos que no son los que se están cargando en ese preciso momento.
Esto era peor antes de LearnDash 3.5, ya que antes el impacto era mayor (sobre un 90%) porque se cargaban muchísimos más datos con cada visita y esto hacía que el servidor tardara mucho más en construir la página.
Cada plugin tiene su forma de funcionar pero, como digo siempre, en informática TODO tiene un coste de recursos y ciertas funcionalidades requieren implementaciones “difíciles”.
¿Qué alternativa tenemos sin usar un plugin LMS?
Pues aquí es a donde quiero llegar. Hay casos como el mío, donde solo utilizo LearnDash para mostrar contenido: Lecciones, Módulos, Cursos, etc., y quizás la única funcionalidad dinámica que utilizo es el botón de completar.
Para estos casos, le he estado dando vueltas y he dado con la solución: utilizar nuestros propios CPTs creados y configurados con CPT UI y usamos ACF Free (o Pro) para los custom-fields.
De esta forma, no estaremos limitados a las funcionalidades básicas del plugin LMS al plasmar la arquitectura de contenido, sino que podremos montar nosotros la estructura como queramos:
Esta captura que estás viendo es un tipo de contenido “Proyecto completo” de mi Academia WP Avanzado, donde muestro el vídeo, la duración, las visualizaciones, el estado (para cada usuario), el timeline y los enlaces de interés. Todo esto, con campos personalizados de ACF.
Por otro lado, tenemos abajo el botón para “Completar” y el botón “Me gusta” o “Favoritos”, ambos creados usando Elementor Pro y sin programar. No diré cómo, eso me lo guardo para mis alumnos de la Academia 😉
Por otro lado, con lo que sale de esto puedo crear listados totalmente personalizados:
Todo esto se hace sin programar nada, sino que todo está hecho con Elementor Pro, usando su Theme Builder y las funcionalidades que añaden Dynamic.ooo o e-Addons for Elementor.
¿Qué ventajas tenemos al montar así el contenido en un LMS? Pues te las voy a listar:
- Mucha flexibilidad para estructurar el contenido como quieras: el límite está en tu imaginación.
- Posibilidad de sacar más datos en front-end sin usar plugins específicos (como en el caso de LearnDash). Puedes mostrar los datos como quieras utilizando un maquetador avanzado como Elementor Pro.
- Mucha libertad para implementar nuevas automatizaciones e implementaciones con plugins como AutomatorWP.
- Posibilidades ilimitadas de integración con otros plugins e incluso servicios externos.
- Con plugins como AutomatorWP, podríamos incluso construir un sistema de estadísticas avanzado.
- Con condicionales no sería difícil plasmar todos los “prerrequisitos” que podemos imponer al usuario con LearnDash.
- El consumo de recursos de PHP y MySQL por cada visita es muchísimo menor, con la consecuente ganancia en la velocidad de carga.
¿Y qué desventajas tiene esto?
Si usamos las funcionalidades más avanzadas de LearnDash o de cualquier plugin LMS avanzado esto no nos va a servir, ya que la integración para ciertas cosas puede ser bastante más compleja.
Los “exámenes” o Quiz de LearnDash podrían llegar a ser sustituidos con Gravity Forms y ciertos condicionales, pero hacerlo con LearnDash o cualquier plugin LMS es mucho más automático.
Perdemos el editor drag and drop del “Course Builder”, pero yo esto tampoco lo veo como una desventaja, ya que no me gusta nada y nunca lo he utilizado (lo implementaron en 2019 y no me acostumbré a él).
Por otro lado, perdemos toda la parte de pago, pero es fácilmente sustituible si utilizamos un sistema de membresías como MemberPress y WooCommerce como pasarela de pago, o incluso WooCommerce Memberships, WooCommerce Suscriptions y WooCommerce. Aunque no soy muy fan de este pack, es una solución que cumple con lo que necesitamos.
En cualquier plugin de membresías podemos jugar con las reglas y los roles de usuario:
Podemos pensar que perdemos compatibilidad, pero realmente ganamos porque existen más plugins compatibles con CPTs propios que con LearnDash o cualquiera de los otros plugins LMS para WordPress.
Bueno, para terminar, te voy a comentar varias cosas.
Evidentemente toda esta reflexión que acabo de hacer en este post es para usuarios un poco avanzados, ya que requiere algo de visión “perimetral”.
Si quieres usar LearnDash y buscas más información, aquí tengo un post para ti: https://alvarofontela.com/learndash-wordpress-elearning/
Créeme: dentro del terreno de los plugins LMS para WordPress, los he probado todos (al menos los más comunes y alguno más) y LearnDash es de los más completos en funcionalidades, pero también es de los más compatibles.
Por otro lado, si no sabes de qué hablo cuando explico cosas sobre CPTs y ACF, te dejo este post sobre los tipos de contenido personalizados que creo que te va a gustar: https://alvarofontela.com/acf-cpt-ui-custom-fields-custom-posts-wordpress/
Esto también es aplicable a la construcción de elementos avanzados utilizando Elementor Pro y Dynamic.ooo, una combinación con la que se puede hacer de todo.
2 Responses
Hola Álvaro, nombras dynamic.ooo pero entiendo que otros plugins como el pack crocoblock serían también válidos. Además con crocoblocl sino me equivoco, puedes crear cpt y custom fields, no? Gracias por la reflexión.
Hola Lucas, efectivamente, el stack de Crocoblock te serviría para la mayoría de cosas. Dynamic no es igual a Crocoblock, pero se solapan algunas funciones.