Cómo Encolar Assets en el Plugin Helper
Qué significa «encolar» en WordPress y cómo el plugin carga su CSS y JavaScript de forma correcta y ordenada.
includes/class-assets.php. No se modifica ningún otro archivo.
¿Qué significa «encolar» un archivo CSS o JS?
En WordPress, encolar (del inglés enqueue) significa registrar un archivo CSS o JavaScript para que WordPress lo incluya en la página de forma ordenada y segura.
El proceso de encolado es siempre el mismo:
WordPress dispara wp_enqueue_scripts
Nuestra función llama a wp_enqueue_style() o wp_enqueue_script()
WordPress escribe las etiquetas <link> y <script> en el HTML
Archivo que se completa hoy
├── divi-lms-helper.php
├── includes/
│ ├── class-wizard.php
│ ├── class-shortcodes.php
│ ├── class-assets.php <– ESTA LECCIÓN
│ └── class-admin-page.php <– Lección 5.5
└── assets/
├── css/
│ └── helper-styles.css <– el archivo que se encolará (lección 5.6)
└── js/
└── helper-scripts.js <– el archivo que se encolará (lección 5.7)
Los archivos helper-styles.css y helper-scripts.js ya existen pero están vacíos. Esta lección registra el mecanismo de carga. El contenido real de esos archivos se completa en las lecciones 5.6 y 5.7.
El código de class-assets.php
/**
* Divi LMS Helper — Assets
*/
if ( ! defined( ‘ABSPATH’ ) ) { exit; }
class DLMS_Assets {
// ── Constructor: conectar los hooks de encolado ────────────────
public function __construct() {
// Frontend: páginas públicas del sitio
add_action( ‘wp_enqueue_scripts’, [ $this, ‘enqueue_frontend’ ] );
// Admin: área de administración de WordPress
add_action( ‘admin_enqueue_scripts’, [ $this, ‘enqueue_admin’ ] );
}
// ── Assets del frontend ────────────────────────────────────────
public function enqueue_frontend() {
// CSS del plugin
wp_enqueue_style(
‘dlms-helper-styles’, // Identificador único
DLMS_PLUGIN_URL . ‘assets/css/helper-styles.css’, // URL del archivo
[], // Dependencias
DLMS_VERSION // Versión
);
// JS del plugin (true = cargar en el footer)
wp_enqueue_script(
‘dlms-helper-scripts’,
DLMS_PLUGIN_URL . ‘assets/js/helper-scripts.js’,
[ ‘jquery’ ], // Depende de jQuery
DLMS_VERSION,
true // Cargar en el footer
);
// Pasar datos de PHP al JS (disponibles como dlmsData.ajaxUrl)
wp_localize_script(
‘dlms-helper-scripts’,
‘dlmsData’,
[
‘ajaxUrl’ => admin_url( ‘admin-ajax.php’ ),
‘siteUrl’ => get_site_url(),
]
);
}
// ── Assets del área de administración ─────────────────────────
public function enqueue_admin( $hook ) {
// Solo cargar en la página del wizard
if ( ‘dashboard_page_dlms-wizard’ !== $hook ) {
return;
}
wp_enqueue_style(
‘dlms-admin-styles’,
DLMS_PLUGIN_URL . ‘assets/css/helper-styles.css’,
[],
DLMS_VERSION
);
}
}
new DLMS_Assets();
Las tres funciones de encolado
| Función | ¿Qué hace? | Hook donde se usa |
|---|---|---|
wp_enqueue_style() |
Registra un archivo CSS y genera una etiqueta <link> en el <head> de la página. |
wp_enqueue_scripts |
wp_enqueue_script() |
Registra un archivo JS. Con el parámetro true al final, lo carga en el footer (más eficiente que en el <head>). |
wp_enqueue_scripts |
wp_localize_script() |
Inserta un objeto JavaScript con datos de PHP antes del script. Así el JS puede conocer la URL de admin-ajax, el nonce de seguridad, u otros valores que viven en PHP. | Después de wp_enqueue_script() |
Los parámetros de wp_enqueue_style y wp_enqueue_script
Ambas funciones reciben los mismos cuatro primeros parámetros. Es importante entender qué hace cada uno:
| # | Parámetro | Ejemplo | Para qué sirve |
|---|---|---|---|
| 1 | Handle (identificador) | 'dlms-helper-styles' |
Nombre único del asset. WordPress lo usa internamente para evitar duplicados y manejar dependencias. |
| 2 | URL del archivo | DLMS_PLUGIN_URL . 'assets/css/...' |
Ruta completa al archivo en el servidor. |
| 3 | Dependencias | [] o ['jquery'] |
Lista de handles que deben cargarse primero. Si el JS depende de jQuery, WordPress garantiza que jQuery se cargue antes. |
| 4 | Versión | DLMS_VERSION |
Se agrega como ?ver=1.0.0 en la URL. Cuando la versión cambia, los navegadores descargan el archivo nuevo en lugar de usar el caché. |
| 5 (solo JS) | Footer | true |
Si es true, el script se coloca al final del <body>. Esto mejora la velocidad de carga porque el HTML se renderiza antes de ejecutar el JS. |
Encolado condicional en el admin
En el método enqueue_admin() recibimos el parámetro $hook, que contiene el identificador de la página de admin que se está cargando. Usamos esa información para cargar el CSS solo en la página del wizard:
// Si NO estamos en la página del wizard, salir sin hacer nada
if ( ‘dashboard_page_dlms-wizard’ !== $hook ) {
return;
}
// Solo llegamos aquí si estamos en el wizard
wp_enqueue_style( ‘dlms-admin-styles’, … );
}
Cómo verificarlo: el código fuente de la página
La forma más directa de confirmar que los assets se están cargando es ver el código fuente de cualquier página del frontend con Ctrl+U (o clic derecho → Ver código fuente). Ahí aparecen las etiquetas generadas por WordPress:
<link rel=’stylesheet’ id=’dlms-helper-styles-css’
href=’https://cursolmsdiviteme.test/wp-content/plugins/divi-lms-helper/assets/css/helper-styles.css?ver=1.0.0′
type=’text/css’ media=’all’ />
<!– continúa con los estilos de Divi… –>
<script type=»text/javascript» id=»dlms-helper-scripts-js-extra»>
var dlmsData = {«ajaxUrl»:»https://cursolmsdiviteme.test/wp-admin/admin-ajax.php»,
«siteUrl»:»https://cursolmsdiviteme.test»};
</script>
<!– el archivo JS –>
<script src=»…/divi-lms-helper/assets/js/helper-scripts.js?ver=1.0.0″
id=»dlms-helper-scripts-js»></script>
También podés verificar los assets con F12 → pestaña Red → filtrar por «helper». Para que funcione debés tener DevTools abierto antes de cargar la página, o usar Ctrl+R con DevTools abierto. Si abrís DevTools después de que la página ya cargó, la pestaña de Red aparece vacía porque no registró esas peticiones.
¿Para qué sirve wp_localize_script?
Esta función es una de las más útiles de WordPress. Permite pasar valores que existen en PHP hacia el JavaScript del plugin, sin necesidad de hardcodear URLs ni datos en el JS:
El objeto dlmsData queda disponible en el JS de esta forma:
console.log( dlmsData.ajaxUrl ); // → «https://cursolmsdiviteme.test/wp-admin/admin-ajax.php»
console.log( dlmsData.siteUrl ); // → «https://cursolmsdiviteme.test»
Verificacion de la leccion
Pasos para verificar que los assets se cargan
- Visitá cualquier página del frontend del sitio (la página de inicio, una página con shortcodes, etc.).
- Hacé clic derecho → Ver código fuente (o presioná Ctrl+U).
- Buscá con Ctrl+F la palabra
helper-styles— debe aparecer una etiqueta<link>con la URL del CSS del plugin. - Buscá
helper-scripts— debe aparecer el objetodlmsDatay luego la etiqueta<script>con la URL del JS. - Verificá que en la URL aparezca
?ver=1.0.0— confirma que se está usando la constante DLMS_VERSION.