Qué es un Template Override? Personaliza LearnPress sin tocar el plugin
Hasta ahora usamos CSS y JavaScript para cambiar cómo se ve el
sitio. En este módulo vamos un nivel más profundo: vamos a cambiar el
HTML que genera LearnPress, sin tocar ni una sola línea
del plugin. Eso se llama Template Override.
que escribir. Vas a entender el «porqué» antes de ponerte a trabajar.
Primero entendamos el concepto con una analogía
Imaginate que sos el dueño de un restaurante de hamburguesas. Tu
proveedor (LearnPress) te da una receta estándar para cada plato. Pero
vos querés que tus hamburguesas sean únicas: diferente presentación, más
ingredientes.
¿Qué hacés? No cambiás el libro de recetas del proveedor — si lo
actualizan, perderías todo lo que modificaste. En cambio, escribís tu
propia versión de la receta y la guardás en tu cuaderno. Cuando el mozo
pide la receta, primero mira tu cuaderno. Si no está
ahí, recién entonces va al libro del proveedor.
Tu cuaderno = Child theme
Receta = Template PHP
Mozo = WordPress
plugin. Tu child theme puede tener su propia versión. WordPress
siempre busca primero en el child theme.
¿Por qué no editamos directamente el plugin?
Mucha gente comete este error al principio. Acá te mostramos la
diferencia:
Cuando actualizás LearnPress,
todos tus cambios se borran y volvés a cero
Si hay un error en tu código, puede romper la funcionalidad del
plugin entero
Tenés que recordar qué cambiaste en cada actualización para
volver a hacerlo manualmente
Tus cambios están en el child theme — las
actualizaciones del plugin no los tocan
Si tu versión falla, alcanza con borrar el archivo y el plugin
usa la suya automáticamente
Podés actualizar LearnPress con total tranquilidad, sin miedo a
perder nada
Cómo WordPress decide qué template usar
Cada vez que alguien visita una página de LearnPress en tu sitio,
WordPress sigue este orden de búsqueda — y usa el
primero que encuentre:
busca más.
casi nunca tiene estos archivos.
usa estos.
child theme. Solo si no encuentra el archivo ahí, va a buscarlo al
plugin. Esta lógica es la base de todo lo que hacemos en este módulo.
Lo que ya existe en tu proyecto
Ya creamos la carpeta learnpress/ dentro del child theme.
Así se ve tu child theme ahora, y cómo se compara con la carpeta de
templates del plugin:
📁 Tu child theme
Fecha de modificación
Tipo
Tamaño
learnpress
NUEVO ✓
📦 Templates del plugin
Fecha de modificación
Tipo
Tamaño
single-course
Lo usamos en Lección 4.2
single-course.php
Lo usamos en Lección 4.2
La regla de los 3 pasos para hacer un Override
Siempre que quieras personalizar un template de LearnPress, seguís estos
3 pasos. Siempre los mismos, en ese orden:
Buscás el archivo en
wp-content/plugins/learnpress/templates/ y locopiás — nunca lo editás directamente.
learnpress/ de tu childtheme
Respetando la misma estructura de carpetas. Por ejemplo: si el
original está en
templates/single-course.php, lo ponésen
divi-lms-child/learnpress/single-course.php.
Modificás el archivo en tu child theme. WordPress lo va a usar
automáticamente desde la próxima vez que alguien cargue esa página.
Sin tocar el plugin.
El archivo que creamos en esta lección
Hoy creamos un solo archivo: el index.php de seguridad
dentro de la carpeta learnpress/. Su función es bloquear el
acceso directo a la carpeta desde el navegador — una buena práctica
estándar de WordPress.
Archivo creado:
wp-content/themes/divi-lms-child/learnpress/index.php
wp-content/themes/divi-lms-child/learnpress/ * * Jerarquía de búsqueda:
* 1. divi-lms-child/learnpress/ ← aquí (prioridad máxima) * 2.
divi/learnpress/ ← tema padre * 3. plugins/learnpress/templates/ ←
plugin (default) */ if ( ! defined( ‘ABSPATH’ ) ) { exit; }
ABSPATH?Es una constante que WordPress define cuando carga. Si alguien intenta
abrir
index.php directamente en el navegador (sin pasar porWordPress),
ABSPATH no existe y el script terminainmediatamente con
exit. Esto evita que alguien explore laestructura de tu tema desde fuera.
Regla de oro — nunca olvidar
Nunca edites los templates dentro de la carpeta del plugin
LearnPress.
Cada vez que el plugin se actualice, esos cambios se van a borrar.
Siempre trabajá con copias en tu child theme:
divi-lms-child/learnpress/. Tu sitio sobrevive a cualquier
actualización de LearnPress sin perder nada.
✅ Resultado de esta lección
Después de esta lección tu proyecto tiene la siguiente estructura:
└── divi-lms-child/
├──
assets/
├──
learnpress/
← NUEVA — aquí van los overrides
│ └──
index.php
← bloqueo de acceso directo
├──
functions.php
└──
style.css
- Entendés qué es un Template Override y para qué sirve
- Sabés por qué nunca hay que editar los templates del plugin directamente
- Conocés el orden de búsqueda de WordPress (child theme → padre → plugin)
-
La carpeta
learnpress/ya existe en tu child theme lista
para recibir overrides -
En la próxima lección copiamos el primer template:
single-course.php