Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
Mover Scripts al footer

Cómo mover los scripts al footer en WordPress

En esta entrada vamos a ver cómo mover o cargar los archivos JS en el footer de WordPress.

Si miramos el código fuente de nuestro sitio es probable que veamos que dentro de la sección head tenemos algunos archivos JavaScript o JS cargados.

Si además estamos tratando de optimizar la velocidad de carga y rendimiento de nuestro sitio utilizando herramientas como Google PageSpeed Insights habremos visto un mensaje de este tipo: Eliminar el JavaScript que bloquea la visualización y el CSS del contenido de la mitad superior de la página.

scripts footer

Cargar los archivos JS en el footer en lugar de en el head hará mejorar la velocidad del tiempo de carga y el rendimiento de nuestro sitio, mejorando el WPO y ofreciendo una mejor experiencia de usuario.

Para poder mover todo el JavaScript al footer de nuestro sitio es imprescindible que tanto nuestro tema como todos los plugins que usemos, carguen sus propios scripts utilizando la función de encolado wp_enqueue_script().

Esta función admite 5 parámetros (wp_enqueue_script($handle, $src, $deps, $ver, $in_footer);)

  • $handle, nombre del script. Debe ser único.
  • $src, URL o ruta del script.
  • $deps, array de dependencias de otros scripts.
  • $ver, versión del script.
  • $in_footer, valor booleano. Si es true se anclará a wp_footer y si es false a wp_head. Por defecto es false.

 

El primer paso por lo tanto será cargar nuestros scripts (si el tema es nuestro o tenemos algún plugin propio) de la siguiente manera:

function load_myscripts() { wp_enqueue_script( 'my-scripts', get_template_directory_uri() . '/js/scripts.min.js', array( 'jquery' ), '', true ); } add_action( 'wp_enqueue_scripts', 'load_myscripts' );

Como puede observarse el último parámetro es true para que envíe mi JS al footer.

Vale… ¿ahora qué pasa si el tema o los plugins no son nuestros? Afortunadamente no es necesario hardcodear un tema o plugin para mover sus scripts al footer (Siempre y cuando cargue sus scripts con la función wp_enqueue_script()). Basta con añadir esta función al archivo functions.php

// Remove scripts from head. function move_scripts_from_head_to_footer() { remove_action( 'wp_head', 'wp_print_scripts' ); remove_action( 'wp_head', 'wp_print_head_scripts', 9 ); remove_action( 'wp_head', 'wp_enqueue_scripts', 1 ); add_action( 'wp_footer', 'wp_print_scripts', 5); add_action( 'wp_footer', 'wp_enqueue_scripts', 5); add_action( 'wp_footer', 'wp_print_head_scripts', 5); } add_action('wp_enqueue_scripts', 'move_scripts_from_head_to_footer');

Antes he dicho que no es necesario hardcodear tu tema o plugin. Por lo tanto, si el tema no es desarrollado por ti, ésta función debería ir en el functions.php de tu child-theme o en tu plugin de utilidades.

En algún caso he visto que el archivo jQuery de WordPress seguía cargándose en el head. Para enviarlo al footer agrega estas dos funciones más:

function force_jquery_to_footer() { wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', includes_url( '/js/jquery/jquery.js' ), false, NULL, true ); wp_enqueue_script( 'jquery' ); } add_action( 'wp_enqueue_scripts', 'force_jquery_to_footer' ); // Remove jQuery from old wp_print_scripts function remove_jquery_from_wp_print_scripts() { wp_deregister_script( 'jquery' ); } add_action( 'wp_print_scripts', 'remove_jquery_from_wp_print_scripts' );

Con estas funciones ya debería cargarse todo tu JS en el footer y habrás optimizado tu web mejorando la velocidad de carga, el rendimiento y la experiencia de usuario.

Puede que también te interese

Cómo crear un formulario de registro personalizado en WordPress
Cómo crear un formulario de registro personalizado en WordPress
En entradas anteriores hemos visto cómo crear formularios de log-in / log-out personalizados, y cómo agregar campos personalizados al perfil de usuario de WordPress tanto…
Ocultar el editor WYSIWYG en función del template seleccionado
Ocultar el editor WYSIWYG en función del template seleccionado
Es probable que en alguna ocasión estés haciendo un desarrollo a medida donde necesites crear una plantilla de página para una determinada sección o grupo…
Cómo pasar un parámetro a un filtro de WordPress
Cómo pasar un parámetro a un filtro de WordPress
Hace unos días publiqué una entrada sobre qué son, cómo crear y cómo utilizar los filtros de WordPress. En esta entrada vamos a ver cómo…
Mejora la puntuación de Google PageSpeed Insights: Habilita la compresión
Mejora la puntuación de Google PageSpeed Insights: Habilita la compresión
1. Optimizar imágenes 2. Minificar CSS y JS 3. Especificar caché de navegador 4. Habilita la compresión 5. Reducir el tiempo de respuesta del servidor…