Tengo esto en mi functions.php
archivo y no puedo hacer que jQuery se cargue en el pie de página. Sin includes
embargo, el archivo se carga bien en el pie de página. ¿Qué más necesito hacer?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
a sus etiquetas de script en su lugar: matthewhorne.me/defer-async-wordpress-scriptsRespuestas:
Para hacerlo, primero tendrá que cancelar el registro de su script jQuery y luego registrarse nuevamente. Si usa jQuery viene con WordPress, la siguiente es la función que está buscando.
Si utiliza la versión de jQuery alojada en Google CDN, avíseme si modificaré este código para la URL de Google CDN.
fuente
wp_enqueue_scripts
se usa solo en el front end mientrasadmin_enqueue_scripts
se usa para el back endAquí hay otra opción que evita tener que cancelar el registro y volver a registrarse:
Esta solución imita el núcleo de WordPress al configurar
group
a1
, que es cómo WordPress determina si un script debe estar en el pie de página o no (no estoy al tanto del razonamiento1
, como @jgraup señaló en los comentarios, parece un poco arbitrario).fuente
wp_register_script
usaadd_data( $handle, 'group', 1 )
para mover guiones al pie de página. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - ¿Podría explicar por qué es eso? Echando un vistazo a su código, 'grupo' parece un poco arbitrario. Pero puedo ver en core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… cómo se usa en WP_Scripts->do_item
más adelante. De cualquier manera, esta parece ser la respuesta menos destructiva.Una mejor solución:
¿Por qué es mejor que la respuesta aceptada OMI
$footer = true
.Sobre no hacerle esto al administrador
Si los complementos agregan jquery en línea a wp_head, fallará cuando no se cargue jquery en ese punto, por lo que le sugiero que evite eso hasta que tenga millones editando su sitio e intente optimizar el rendimiento de su administrador. Esto también es cierto para frontend, por lo que debe tener cuidado con los temas o complementos mal codificados que asumen jquery en la cabeza utilizando el código jQuery en línea. WP y los complementos registran otras secuencias de comandos en la cabeza del administrador con jquery en deps para que no funcione de todos modos, creo.
Sobre eso no funciona
Debe tener en cuenta que si se carga cualquier otra secuencia de comandos en el encabezado que tenga jQuery en sus dependencias, también hará que jQuery se cargue en el encabezado justo antes de sí mismo. Y esto es bueno y esperado, la razón por la que existe el sistema wp_enqueue. Esto significa que pronto aprenderá si usa algunos complementos que uno de ellos requerirá causar jquery en la cabeza. Es el valor predeterminado para los scripts en cola, lamentablemente.
Solución radical
Creo que frenará cualquier JS en línea que suponga jquery, pero si eso fuera raro. Esto forzará todos los scripts al pie de página, independientemente de cómo estén en cola.
fuente
He desarrollado un complemento para este problema específico. Este complemento no se mete con WordPress jQuery, ya que solo se carga en el front-end. Ver: jQuery Manager para WordPress
Casi todos usan el mango incorrecto
WordPress en realidad usa el controlador jquery-core, no jquery:
La forma correcta de hacerlo
En mi ejemplo a continuación, uso el jQuery CDN oficial en https://code.jquery.com También uso script_loader_tag para poder agregar algunos atributos de CDN.
Puedes usar el siguiente código:
fuente
fuente
Hey, solo cambia tu código para que te guste esto
creo que funciona bien
agregue estas líneas en su archivo functions.php
luego agrega script al pie de página
fuente
remove_action
/add_action
si va a hacerlo de esta manera.