Tutor Certificate PDF Generator (Admin)
Plugin de WordPress para generar, desde el administrador, el certificado real de un alumno de TutorLMS (predeterminado o personalizado desde el Certificate Builder) como archivo PDF, generado en el servidor con dompdf — sin depender de html2canvas/jsPDF en el navegador del alumno, que es la causa más común de que la descarga falle.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/zpadez/tutor_lms_certificate/archive/refs/heads/main.zipReadme
Tutor Certificate PDF Generator (Admin)
Plugin de WordPress para generar, desde el administrador, el certificado real de un alumno de TutorLMS (predeterminado o personalizado desde el Certificate Builder) como archivo PDF, generado en el servidor con dompdf — sin depender de html2canvas/jsPDF en el navegador del alumno, que es la causa más común de que la descarga falle.
Permite descargar el PDF o enviarlo directamente por correo al alumno.
¿Por qué existe este plugin?
TutorLMS normalmente genera el PDF del certificado en el navegador: toma una "foto" (html2canvas) del certificado en pantalla y la mete en un PDF (jsPDF). Esto falla con frecuencia por:
- Imágenes o fuentes cargadas desde otro dominio sin cabeceras CORS.
- Conflictos con otros scripts del tema o de plugins.
- Elementos CSS avanzados que
html2canvasno soporta bien. - Bloqueadores de anuncios/extensiones del navegador del alumno.
Este plugin evita todo eso: descarga el HTML real que TutorLMS ya renderiza para ese alumno (autenticándose como él mediante una cookie de sesión temporal generada en el servidor) y lo convierte a PDF con dompdf, en el servidor. El diseño resultante es el mismo que ya tienes construido — no se recrea nada a mano.
Requisitos
- WordPress con TutorLMS (y el addon de Certificados / Certificate Builder si usas plantillas personalizadas).
- PHP con la extensión
dompdfinstalada vía Composer. - Acceso SSH o terminal para correr
composer(o instalarvendor/localmente y subirlo). - Que el hosting permita loopback requests (
wp_remote_getdel sitio hacia sí mismo) — es un requisito estándar de WordPress, casi todos los hostings lo permiten.
1. Instalación
- Sube la carpeta
tutor-certificate-pdf-generatorawp-content/plugins/. - Instala dompdf:
cd wp-content/plugins/tutor-certificate-pdf-generator composer require dompdf/dompdfSi no tienes SSH, instala dompdf en tu máquina local con Composer y sube la carpeta
vendor/completa junto con el plugin. - Activa "Tutor Certificate PDF Generator (Admin)" desde Plugins en el admin de WordPress.
2. Configuración (una sola vez)
Ve a Certificados PDF → Ajustes.
Origen del certificado
| Campo | Qué poner |
|---|---|
| Plantilla de URL del certificado | La URL real del certificado, copiada del navegador viendo la página como un alumno, con {course_id} y {user_id} en lugar de los IDs reales. Ej: https://tusitio.com/certificate/{course_id}/?user_id={user_id} |
| Selector CSS del certificado | El id o class del contenedor del certificado (clic derecho → Inspeccionar sobre el certificado en el navegador). El plugin trae valores comunes de TutorLMS por defecto. |
| Plantillas disponibles | Lista opcional ID\|Nombre, una por línea, con las plantillas predeterminadas y personalizadas del Certificate Builder que quieras poder elegir manualmente al generar. Ver más abajo cómo obtener el ID. |
| Tamaño de papel / Orientación | Según el diseño de tu certificado (normalmente A4 horizontal). |
Cómo obtener el ID de cada plantilla del Certificate Builder
- Ve a Tutor LMS Pro → Settings → Certificate → All Certificates.
- Abre cada plantilla (predeterminada o personalizada) en el editor.
- En la URL del navegador verás algo como
post.php?post=245&action=edit→ el ID es245. - Agrega una línea por plantilla en el campo Plantillas disponibles, ej:
245|Personalizada — Enfoca2 Studios.
Nota: cada curso en TutorLMS tiene una plantilla ya asignada (la que se usa normalmente). Si dejas la plantilla en "— Usar la plantilla asignada al curso —" al generar, el plugin usará automáticamente esa. Elegir una plantilla distinta en el menú solo funciona si tu instalación de TutorLMS soporta forzarla vía parámetro de URL (
{template_id}); si tu versión no lo soporta, ese selector no tendrá efecto y seguirá usando la plantilla asignada al curso — en ese caso avísame y ajustamos el método de selección.
Correo al enviar el certificado
Configura el asunto y el mensaje del correo que recibirá el alumno al usar el botón "Enviar por correo". Placeholders disponibles: {student_name}, {course_title}.
3. Uso
- Ve a Certificados PDF.
- (Opcional) Elige una plantilla del menú.
- Elige el curso → clic en Ver alumnos.
- Para cada alumno inscrito verás dos botones:
- Descargar PDF — genera y descarga el certificado al instante.
- Enviar por correo — genera el PDF y lo envía como adjunto al correo del alumno, usando el asunto/mensaje configurado.
Notas y limitaciones
- dompdf no ejecuta JavaScript: si tu certificado depende de animaciones o elementos generados por JS (no HTML/CSS estático), esos no aparecerán en el PDF. Texto, imágenes de fondo, fuentes y posicionamiento CSS sí se respetan.
- El envío de correo usa
wp_mail()de WordPress — si los correos no llegan, revisa que tengas un plugin SMTP configurado (WP Mail SMTP, etc.), ya que elmail()nativo de PHP suele terminar en spam o no enviarse. - Si ves "No se encontró el selector CSS del certificado", ajusta el selector en Ajustes.
- Si ves un código de error HTTP distinto de 200, revisa la plantilla de URL — probablemente los placeholders no arman una URL válida en tu instalación.
Changelog
- 1.4.1 — La detección ahora busca "certific" (cubre tanto "certificate" como "certificado") en vez de solo el término en inglés, y agrega varios slugs de respaldo en español (incluyendo
/dashboard/certificado-de-tutor/, el que usa este sitio) además de reintentar automáticamente si el primer enlace encontrado no carga. - 1.4.0 — Nueva pantalla "Diagnóstico": elige curso + alumno y muestra paso a paso qué URLs prueba el plugin y todos los enlaces reales que encuentra en cada página, para identificar a mano el correcto cuando la detección automática no acierta.
- 1.3.0 — La URL del certificado ya no hay que configurarla: el plugin la descubre automáticamente navegando el panel del alumno (dashboard → "Mis certificados" → certificado del curso). El campo de URL manual queda como respaldo avanzado opcional.
- 1.2.0 — El menú de plantillas ahora se llena automáticamente con las plantillas reales del Certificate Builder (detector automático de post type en Ajustes), en vez de tener que copiar IDs a mano.
- 1.1.0 — Selector de plantilla (predeterminada/personalizada), envío del certificado por correo al alumno, README.
- 1.0.0 — Versión inicial: descarga de certificado en PDF por curso/alumno.
Si el descubrimiento automático no encuentra la sección de certificados
Ve a Certificados PDF → Diagnóstico, elige el curso y el alumno con el error, y verás:
- Si
/dashboard/cargó correctamente (si no, tu panel de alumno usa otro slug base — dímelo y lo ajustamos). - Todos los enlaces reales encontrados en esa página, para que identifiques cuál lleva a los certificados.
- El mismo detalle para la página de la lista de certificados.
Con esos enlaces reales de tu sitio (no una URL genérica), puedes pegar el correcto en Ajustes → URL manual del certificado (reemplazando el ID del curso por {course_id} y el del alumno por {user_id}) como respaldo, mientras afinamos la detección automática para tu instalación específica.
Cómo funciona el descubrimiento automático de la URL (v1.3.0+)
Ya no necesitas encontrar ni copiar ninguna URL. Cuando generas un certificado, el plugin:
- Abre
/dashboard/del sitio autenticado como ese alumno (usando una cookie de sesión temporal generada en el servidor, sin necesidad de su contraseña). - Busca en esa página el enlace a la sección de certificados del alumno.
- Dentro de esa sección, identifica cuál certificado corresponde al curso elegido (por el título del curso o por su ID en el enlace).
- Abre esa página final y extrae el bloque del certificado con el selector CSS configurado.
Si en algún paso no logra encontrar el enlace correcto (por ejemplo, porque el addon de Certificados no está activo, o el alumno no tiene certificado para ese curso), verás un mensaje explicando exactamente en qué paso falló — no un error genérico.
Si por alguna razón el detector no funciona en tu instalación, puedes seguir usando el campo "URL manual del certificado" en Ajustes como respaldo (opcional), tal como en versiones anteriores.
TutorLMS no documenta públicamente el nombre exacto del "post type" donde el Certificate Builder guarda tus plantillas (puede variar según versión). Por eso, en vez de asumirlo, el plugin trae un detector:
- Ve a Certificados PDF → Ajustes. En la parte de arriba verás una tabla con los post types de tu base de datos que contienen "certificat" en el nombre, junto con cuántos registros tiene cada uno.
- Identifica cuál corresponde a tus plantillas (normalmente el que tenga el número de certificados que tú has creado) y pégalo en el campo "Post type de certificados".
- Guarda los ajustes. Vuelve a la página principal del plugin — el menú Plantilla ya mostrará los nombres reales de tus certificados (predeterminados y personalizados) tal como aparecen en el Certificate Builder.
Si alguna plantilla predeterminada no aparece en la lista automática (porque no vive como post en la base de datos), puedes seguir agregándola a mano en el campo "Plantillas adicionales" de Ajustes, formato ID|Nombre.