Diferir jQuery en WordPress

Aprenda cómo diferir jQuery en WordPress para obtener mayor velocidad de página

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-06

¿Por qué diferir jQuery?

jQuery todavía se incluye con cada instalación de WordPress y la mayoría de los temas lo cargan sin diferirlo. Eso significa que bloquea el análisis de HTML en cada carga de página. Aquí le mostramos cómo solucionarlo.

Última revisión por Arjen Karel en marzo de 2026

jQuery aparece en el 74% de todas las páginas web según el 2024 Web Almanac, impulsado en gran medida por WordPress. Sin embargo, solo el 47% de las páginas móviles utilizan el atributo defer en algún script. Eso significa que la mayoría de los sitios de WordPress todavía cargan jQuery de forma sincrónica, bloqueando el análisis de HTML y retrasando cada métrica de renderizado en la página, especialmente el Largest Contentful Paint.

Eche un vistazo a la imagen a continuación. Muestra la diferencia en el análisis de HTML entre scripts normales, diferidos y asíncronos. Si jQuery no se difiere, el navegador bloqueará el análisis de HTML hasta que se haya ejecutado el script. Si jQuery se difiere, el navegador no tiene que bloquear el analizador. Y esto le ahorrará mucho tiempo. Para una comparación completa, consulte async vs defer y cómo esto afecta a las Core Web Vitals.

La razón por la que los creadores de temas no difieren jQuery de forma predeterminada es por herencia. Algunos plugins agregan scripts (en línea) que dependen de jQuery. Si jQuery se carga de forma diferida pero el script que necesita jQuery no se difiere, habrá un conflicto (y un error).

Método 1: Diferir jQuery manualmente

Para diferir jQuery manualmente necesitamos encontrar el 'handle' que se ha utilizado para encolar jQuery. A continuación, lo eliminamos de la cola y agregamos nuestra propia versión diferida del mismo archivo sin romper la capacidad de actualizar el archivo del tema.

Paso 1: Encontrar dónde se encola jQuery

Primero, encuentre dónde se incluye jQuery en su tema de WordPress. Por lo general, se encuentra en el archivo functions.php del tema o directamente en el archivo header.php. Busque líneas como:

wp_enqueue_script('jquery');    

Ahora sabemos que el handle para jQuery se llama 'jquery'.

Paso 2: Utilizar un tema hijo

Si está modificando un tema padre, primero cree un tema hijo. De lo contrario, sus cambios se sobrescribirán en la próxima actualización del tema.

Paso 3: Encolar jQuery con el atributo 'defer'

En el archivo functions.php de su tema hijo, agregue el siguiente código y modifíquelo para que coincida con la ubicación y el handle de su archivo jQuery. Estamos utilizando la estrategia defer de WordPress 6.3:

function defer_jquery() {
  if (!is_admin()) {
    wp_deregister_script('jquery');
    wp_register_script('jquery', '/js/jquery/jquery.js', [], null, [ 'strategy'  => 'defer']);
    wp_enqueue_script('jquery');
  }
}
add_action('wp_enqueue_scripts', 'defer_jquery',100);

Desglosémoslo:

  • wp_deregister_script('jquery'): Anula el registro del script predeterminado de jQuery.
  • wp_register_script('jquery', '/js/jquery/jquery.js', [], null, [ 'strategy' => 'defer']);: Registra jQuery con la estrategia 'defer'.
  • wp_enqueue_script('jquery'): Encola el script de jQuery modificado.

Et voila: ahora ha diferido jQuery con éxito en su sitio de WordPress. ¡Y como beneficio adicional, ahora sabe cómo diferir cualquier script porque el proceso es exactamente el mismo! Para más técnicas de diferimiento más allá de WordPress, consulte 16 métodos para diferir JavaScript.

Cuidado con los scripts en línea. WordPress 6.3 eliminará silenciosamente la estrategia defer si su script tiene scripts en línea adjuntos en la posición after a través de wp_add_inline_script(). Si difiere jQuery pero aún se carga de forma sincrónica, verifique si algún plugin está agregando scripts en línea al handle de jQuery.

Método 2: usar un plugin

Plugins como WP Core Web Vitals hacen que sea súper fácil diferir jQuery y muchos plugins incluso pueden manejar las complicaciones que puedan surgir al diferir también las dependencias y realizar algunos otros trucos como almacenar en caché los eventos de jQuery hasta que jQuery se haya ejecutado.

Método 3: CloudFlare

Otra forma súper sencilla de diferir jQuery es utilizar el Rocket Loader de CloudFlare. Rocket Loader funciona desactivando todos sus scripts durante la carga de la página y luego volviéndolos a activar rápidamente. Este truco imita el diferimiento de scripts pero tiene algunos inconvenientes:

  • CloudFlare Rocket Loader rompe una característica del navegador llamada escáner de precarga (preload scanner). Con Rocket Loader, los scripts no se precargan y podría tardar un poco más en descargarse y ejecutarse.
  • CloudFlare Rocket Loader es un instrumento bastante contundente. No discrimina entre scripts importantes, menos importantes y agradables de tener. Simplemente difiere todo sin ninguna consideración y le deja sin control sobre el tiempo del script.

Los sitios de WordPress tienen una tasa de aprobación de Core Web Vitals del 45% en dispositivos móviles según el 2025 Web Almanac, siendo LCP la métrica más débil con solo un 53%. El bloqueo de renderizado de jQuery es una de las causas más comunes. Diferirlo no arreglará todo, pero elimina uno de los mayores obstáculos que se interponen entre su sitio y una puntuación LCP aprobatoria.

Pruebe sus cambios

Después de diferir jQuery, revise su sitio. Abra la consola del navegador y busque errores. Haga clic en sus menús, controles deslizantes, formularios y cualquier cosa que utilice JavaScript. Si algo se rompe, la sección de solución de problemas a continuación le ayudará a solucionarlo.

Solución de problemas

Si tiene algún problema, probablemente caerá en una de 3 categorías. La mayoría de los problemas se pueden encontrar abriendo el inspector y navegando a la pestaña de la consola. Si hay algún problema, probablemente encontrará advertencias que se parecen a esto y dicen 'Uncaught ReferenceError: jQuery is not defined':

Solucionarlos no es tan difícil de hacer. Junto al error hay una referencia al origen del error. Si es (index), lo más probable es que se origine de un script en línea. Si es otro archivo, o bien es un problema de tiempo o se olvidó de diferir ese archivo también.

Scripts dependientes

Si está utilizando jQuery, es probable que tenga scripts que dependan de jQuery. Esos scripts también deben diferirse (¡si el script que depende de jQuery no se difiere, se ejecutará antes que jQuery!). Simplemente repita los mismos pasos que tomó para diferir jQuery. Afortunadamente, ya ha sentado las bases, ¡así que esto debería ser un paseo por el parque!

Scripts en línea

¡Los scripts en línea son un problema si dependen de jQuery! Los scripts en línea normales no se pueden diferir. Si agrega el atributo defer, los navegadores simplemente lo ignorarán. Hay 2 formas de solucionar los problemas de los scripts en línea:
$(function(){
 // do something
})
  • Utilice el truco type="module". El nuevo <script type="module"> también diferirá el JavaScript en línea.
  • Coloque los scripts en línea en un archivo externo. Si necesita variables, puede agregarlas en un script en línea directamente en la página, pero las funciones principales dependientes de jQuery deben estar en un archivo externo que también esté diferido.

Problemas de tiempo

Otro problema menos común se origina en el tiempo. Si jQuery no se difiere, se ejecutará antes del evento DOMContentLoaded y load. Usted puede depender de esto. Si se difiere, un script podría ejecutarse después del evento DOMContentLoaded. Esto significa que si ha adjuntado un manejador de eventos en el evento DOMContentLoaded, no se ejecutará de manera confiable. Si se encuentra con problemas como estos, intente cambiar el disparador o envolver la función en jQuery().

En los sitios de WordPress monitoreados por CoreDash, los sitios que difieren todos los scripts, incluido jQuery, tienen un LCP p75 de 2.1 segundos en comparación con 3.4 segundos en los sitios que cargan jQuery sincrónicamente. Esa es una mejora del 38% por un solo cambio de configuración. Después de implementar sus cambios, verifique la mejora con Real User Monitoring. Las puntuaciones de Lighthouse le indican si el atributo defer está funcionando, pero los datos de campo de visitantes reales le indican si su LCP realmente mejoró. Para obtener más información sobre cómo la ubicación del script afecta a las Core Web Vitals, consulte la guía de WordPress sobre Core Web Vitals. Y como siempre, si está atascado, ¡no dude en contactarme!

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

Find out what is actually slow.

I map your critical rendering path using real field data. You get a clear answer on what blocks LCP, what causes INP spikes, and where layout shifts originate.

Book a Deep Dive
Diferir jQuery en WordPressCore Web Vitals Diferir jQuery en WordPress