Override del dashboard del estudiante
Vamos a copiar la plantilla del área privada del estudiante de LearnPress a nuestro child theme y agregarle nuestra clase CSS para poder darle estilo.
¿Creamos código nuevo en esta lección?
Sí — 2 archivos PHP nuevos.
• learnpress/profile/index.php — archivo de seguridad de la carpeta
• learnpress/profile/dashboard.php — override del dashboard del estudiante
Dos páginas de cuenta: WooCommerce vs LearnPress
En tu sitio hay dos áreas privadas distintas. Mucha gente las confunde porque las dos muestran cosas del usuario. Pero hacen cosas muy diferentes:
Es la página que aparece en tu captura con las secciones: Escritorio, Pedidos, Descargas, Direcciones.
/mi-cuenta/
Esta es la página que vamos a personalizar hoy.
/profile/nombre-de-usuario/
dany, la URL del perfil de LearnPress sería http://tu-sitio.local/profile/dany/ — podés probarlo ahora mismo en el navegador.
¿Qué es el dashboard de LearnPress?
Cuando un estudiante entra a su perfil de LearnPress, lo primero que ve es el dashboard. Funciona como una pantalla de inicio con un resumen de su actividad de aprendizaje.
Así se ve el perfil de LearnPress:
El área marcada con el menú lateral y el listado de cursos es lo que controla
profile/dashboard.php. El archivo en sí solo es el contenedor;
el contenido real viene de los hooks de LearnPress (lo vemos en el código más adelante).
Los archivos que creamos
Para hacer el override, copiamos la estructura del plugin a nuestro child theme. Creamos una carpeta nueva llamada profile/ dentro de learnpress/ con dos archivos:
NUEVO
NUEVO
¿Por qué dos archivos y no uno? Porque index.php es el «vigilante» de la carpeta — no tiene contenido visible pero evita que alguien pueda ver la lista de archivos si entra a esa URL desde el navegador. Ya hicimos lo mismo en las carpetas anteriores.
El código de dashboard.php
Copiamos el template original del plugin y le hicimos un solo cambio: agregar la clase lms-profile-dashboard al div principal.
📦 Original (en el plugin)
plugins/learnpress/templates/profile/
<div class=«learn-press-profile-dashboard»>
do_action( ‘…’ );
</div>
✏️ Nuestro override (en el child theme)
themes/divi-lms-child/learnpress/profile/
<div class=«learn-press-profile-dashboard lms-profile-dashboard«>
do_action( ‘…’ );
</div>
¿Para qué sirve agregar esa clase?
La clase lms-profile-dashboard nos permite apuntar a este div desde nuestro CSS con un selector propio, sin tocar los estilos del plugin original. Cuando más adelante escribamos reglas como .lms-profile-dashboard { ... } en style.css, esos estilos solo van a afectar a nuestro child theme y no van a romperse con actualizaciones de LearnPress.
Ahora veamos el archivo completo con los tres hooks explicados:
wp-content/themes/divi-lms-child/learnpress/profile/dashboard.php
defined( ‘ABSPATH’ ) || exit();
<div class=«learn-press-profile-dashboard lms-profile-dashboard«>
do_action( ‘learn-press/profile/before-dashboard’ );
// ↑ Hook antes del dashboard (plugins pueden agregar cosas aquí)
do_action( ‘learn-press/profile/dashboard-summary’ );
// ↑ Hook principal: aquí LearnPress carga los cursos y estadísticas
do_action( ‘learn-press/profile/after-dashboard’ );
// ↑ Hook después del dashboard (para agregar contenido extra al final)
</div>
do_action('learn-press/profile/dashboard-summary'), LearnPress envía una señal a todos los componentes que estén escuchando ese nombre. Ellos responden y cargan su contenido. El archivo dashboard.php no hace nada por sí solo — organiza el orden en que aparecen las cosas.
La carpeta profile/ y sus sub-templates
La carpeta profile/ tiene muchos archivos. Por ahora solo tocamos dashboard.php, pero en la siguiente lección vamos a agregar más. Así queda la jerarquía:
← seguridad
← inicio del perfil (esta lección)
← contenedor de tabs
← menú lateral
← avatar + nombre + bio
← contenido de cada pestaña
← «Mis Cursos» (lección 4.7)
Lo que aprendimos al probar en el sitio
Cuando buscamos la clase lms-profile-dashboard con el inspector del navegador, el resultado fue «0 de 0» — no apareció. Eso no es un error nuestro. Es algo que nos enseña cómo funciona LearnPress 4.x por dentro.
¿Por qué no apareció la clase?
En LearnPress 4.x, cuando un estudiante entra a su perfil (/lp-profile/), la página salta directamente a la pestaña «Mis Cursos». No existe una pestaña separada llamada «Dashboard». Por eso el template dashboard.php nunca llega a cargarse en la pantalla del estudiante.
Mirá la diferencia entre lo que esperábamos ver y lo que realmente pasa:
lms-profile-dashboard.
Esto solo ocurre si LearnPress tiene la pestaña «Dashboard» habilitada, que no es el caso por defecto en la versión 4.x.
profile/tabs/courses.php.
Ese template es el que realmente controla lo que ve el estudiante — y es el que vamos a personalizar en la lección 4.7.
¿Entonces para qué sirve dashboard.php?
El archivo dashboard.php es un template de soporte que LearnPress reserva para cuando se activa la sección «Resumen» del perfil (por ejemplo, en instalaciones con configuraciones avanzadas o versiones futuras del plugin). Al tenerlo en nuestro child theme con la clase lms-profile-dashboard, estamos preparados para ese escenario sin romper nada.
Aprender a leer el inspector del navegador y entender por qué algo no aparece es una habilidad clave en el desarrollo de WordPress. En este caso, el inspector nos reveló cómo LearnPress 4.x organiza el perfil internamente — información que no está escrita en ningún manual.
Resultado de esta lección
Creamos la carpeta profile/ en el child theme y el override de dashboard.php. El archivo está correctamente ubicado y listo. Además, descubrimos que el template que realmente controla la pantalla principal del estudiante en LearnPress 4.x es profile/tabs/courses.php — que es exactamente lo que vamos a personalizar en la próxima lección.
La carpeta profile/ correctamente creada en el child theme:
NUEVO