Qué es el Plugin Helper
Creamos el primer archivo del plugin companion que acompaña al child theme y
lo vemos aparecer en WP Admin.
Esta lección crea código nuevo. Creamos el archivo
principal del Plugin Helper — el plugin companion del child theme — y lo
activamos en WordPress. Al terminar vas a ver el plugin en tu lista de
plugins de WP Admin.
Hasta ahora construimos un child theme (el tema hijo de
Divi). Pero hay cosas que WordPress no te deja hacer desde un tema:
registrar shortcodes potentes, mostrar páginas especiales en el panel de
administración, o crear asistentes de configuración. Para eso necesitás un
plugin.
Vamos a crear un plugin propio llamado
Divi LMS Helper. Su único trabajo es extender lo que el
child theme no puede hacer solo. Por eso se llama «helper» — en inglés
significa «ayudante».
¿Cuál es la diferencia entre un child theme y un plugin?
Esta es la pregunta más importante de este módulo. Entenderla te ayudará a
tomar las decisiones correctas cuando construyas tus propios proyectos.
🎨 Child Theme (tema hijo)
- Controla el aspecto visual del sitio
- Cambia colores, tipografías, layouts
- Sobreescribe templates de LearnPress
- Carga CSS y JS de diseño
- Si lo desactivás, el sitio sigue funcionando (solo cambia el diseño)
- Solo existe mientras Divi esté activo como tema padre
🔧 Plugin Helper
- Agrega funcionalidades nuevas al sitio
- Registra shortcodes (
[dlms_courses], etc.) - Crea páginas en WP Admin
- Muestra el wizard de bienvenida
- Funciona independientemente del tema
- Se puede usar con cualquier tema WordPress
Si algo tiene que ver con el
diseño o las plantillas → va en el child theme.
Si algo agrega una funcionalidad nueva al sitio → va en
el plugin.
Estructura de archivos del plugin
El plugin vive en su propia carpeta dentro de
wp-content/plugins/. Esta es la estructura completa que vamos
a construir a lo largo del módulo 5:
│ ├── divi-lms-helper.php
← Lección 5.1 ✓ Archivo principal (el que estamos haciendo ahora)
│ ├── includes/ │ ├──
class-wizard.php
← Lección 5.2 Welcome Wizard │ ├──
class-shortcodes.php
← Lección 5.3 Shortcodes │ ├──
class-assets.php
← Lección 5.4 CSS y JS │ └──
class-admin-page.php
← Lección 5.5 Página de admin │ └──
assets/ ├──
css/ │ └──
helper-styles.css
← Lección 5.6 Estilos └──
js/ └──
helper-scripts.js
← Lección 5.7 JavaScript
En esta lección solo creamos el archivo principal. Los demás archivos ya
existen como esqueletos vacíos (para que el plugin no dé errores al
activarse) y los iremos completando en cada lección siguiente.
El archivo principal — divi-lms-helper.php
El archivo principal de un plugin WordPress tiene una estructura muy
específica. Necesita un bloque de comentarios al principio con la
información del plugin, y después el código que lo hace funcionar.
/** * Plugin Name: Divi LMS Helper * Plugin URI:
https://cursolmsdiviteme.test * Description: Plugin companion para el
child theme Divi LMS Child. * Agrega shortcodes, wizard de bienvenida y
funcionalidades * extra para el LMS. * Version: 1.0.0 * Requires at
least: 6.0 * Requires PHP: 7.4 * Author: Divi LMS Child * License: GPL
v2 or later * Text Domain: divi-lms-helper */
// ── SEGURIDAD: Bloquear acceso directo al archivo
──────────────
if ( ! defined(
‘ABSPATH’ ) ) { exit; }
// ────────────────────────────────────────────────────────────── //
CONSTANTES DEL PLUGIN //
──────────────────────────────────────────────────────────────
define( ‘DLMS_VERSION’,
‘1.0.0’ ); define(
‘DLMS_PLUGIN_FILE’,
__FILE__ ); define(
‘DLMS_PLUGIN_DIR’,
plugin_dir_path(
__FILE__ ) ); define(
‘DLMS_PLUGIN_URL’,
plugin_dir_url( __FILE__ )
);
// ────────────────────────────────────────────────────────────── //
CARGAR ARCHIVOS DEL PLUGIN //
──────────────────────────────────────────────────────────────
function
dlms_load_includes() {
require_once
DLMS_PLUGIN_DIR .
‘includes/class-assets.php’;
require_once
DLMS_PLUGIN_DIR .
‘includes/class-shortcodes.php’;
require_once
DLMS_PLUGIN_DIR .
‘includes/class-admin-page.php’;
require_once
DLMS_PLUGIN_DIR .
‘includes/class-wizard.php’; }
add_action(
‘plugins_loaded’,
‘dlms_load_includes’ );
// ────────────────────────────────────────────────────────────── //
ACTIVACIÓN: guardar opción para el wizard //
──────────────────────────────────────────────────────────────
function
dlms_on_activation() {
add_option(
‘dlms_show_wizard’, ‘1’ );
} register_activation_hook(
__FILE__,
‘dlms_on_activation’ );
// ────────────────────────────────────────────────────────────── //
DESACTIVACIÓN: limpiar opciones temporales //
──────────────────────────────────────────────────────────────
function
dlms_on_deactivation() {
delete_option(
‘dlms_show_wizard’ ); }
register_deactivation_hook(
__FILE__,
‘dlms_on_deactivation’ );
El bloque Plugin Name: es como la «cédula de identidad»
del plugin. WordPress lee esas líneas para mostrar el nombre, descripción
y versión en la lista de plugins.
ABSPATH: bloquea que alguien abra el archivo directamente
por URL.
Las constantes DLMS_*: guardan rutas útiles para no
escribirlas cada vez. DLMS_PLUGIN_DIR es la carpeta del
plugin en el servidor, y DLMS_PLUGIN_URL es la URL pública
para cargar CSS y JS.
plugins_loaded: WordPress llama a esta
acción cuando todos los plugins ya se cargaron. Recién ahí cargamos
nuestros archivos para evitar conflictos.
register_activation_hook: ejecuta código cuando el
usuario activa el plugin. Lo usamos para que el wizard sepa que acaba de
instalarse.
Vista previa — el resultado en WP Admin
Así se ve la pantalla de plugins de WordPress antes y después de activar
el Divi LMS Helper:
Antes — plugin detectado pero inactivo
shortcodes, wizard de bienvenida y funcionalidades extra
para el LMS.
Borrar
crear un sistema de gestión del aprendizaje.
Ajustes
Después — plugin activo (fila en celeste)
shortcodes, wizard de bienvenida y funcionalidades extra
para el LMS.
crear un sistema de gestión del aprendizaje.
Ajustes
Cuando activás el plugin, la fila del «Divi LMS Helper» queda con un borde
verde a la izquierda y el único link disponible es «Desactivar» (en lugar
de «Activar | Borrar»). Eso significa que WordPress lo reconoció
correctamente y lo está ejecutando.
Resumen de la lección 5.1
diseño, el plugin agrega funcionalidades nuevas. Ambos trabajan juntos
pero son independientes.
divi-lms-helper.php — el archivoprincipal del plugin con su cabecera, constantes (
DLMS_*),y los hooks de activación/desactivación.
activar. Una vez activo, WordPress carga los archivos de
includes/que completaremos en las lecciones siguientes.
includes/ yassets/ creadas con archivos esqueleto que evitan erroresmientras se completan en las próximas lecciones.