¿Poner en cola el núcleo jQuery en el pie de página?

15

Tengo esto en mi archivo functions.php y no puedo hacer que jQuery se cargue en el pie de página. Sin embargo, el archivo includes se carga en la multa de 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' );
    
pregunta Desi 30.12.2014 - 20:44

4 respuestas

18

Para hacer eso, primero tendrá que cancelar el registro de su script jQuery y luego registrarse de nuevo. Si usas jQuery con WordPress, a continuación se muestra la función que estás buscando.

function starter_scripts() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', includes_url( '/js/jquery/jquery.js' ), false, NULL, true );
    wp_enqueue_script( 'jquery' );

    wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
    wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );

Si utiliza la versión de jQuery alojada en CDN de Google, hágame saber que modificaré este código para la URL de CDN de Google.

    
respondido por el Robert hue 30.12.2014 - 21:23
36

Aquí hay otra opción que evita tener que cancelar el registro y volver a registrarse:

/**
 * Move jQuery to the footer. 
 */
function wpse_173601_enqueue_scripts() {
    wp_scripts()->add_data( 'jquery', 'group', 1 );
    wp_scripts()->add_data( 'jquery-core', 'group', 1 );
    wp_scripts()->add_data( 'jquery-migrate', 'group', 1 );
}
add_action( 'wp_enqueue_scripts', 'wpse_173601_enqueue_scripts' );

Esta solución imita el núcleo de WordPress estableciendo group a 1 , que es como WordPress determina si un script debería estar en el pie de página o no (no conozco el razonamiento de 1 , como @jgraup señaló en los comentarios que parece un poco arbitrario).

    
respondido por el Matthew Boynes 07.05.2016 - 16:11
16

Una mejor solución:

add_action( 'wp_default_scripts', 'move_jquery_into_footer' );

function move_jquery_into_footer( $wp_scripts ) {

    if( is_admin() ) {
        return;
    }

    $wp_scripts->add_data( 'jquery', 'group', 1 );
    $wp_scripts->add_data( 'jquery-core', 'group', 1 );
    $wp_scripts->add_data( 'jquery-migrate', 'group', 1 );
}

Me gusta esto porque lo cambia en el núcleo.

Acerca de no hacer esto al administrador:

Si los complementos agregan jquery en línea a wp_head, fallará cuando jquery no se cargue en ese momento, 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 válido para la interfaz, por lo que debe tener cuidado con los temas o los complementos mal codificados que suponen jQuery en la cabeza mediante el uso del código jQuery en línea.

Sobre esto no funciona:

Debe tener en cuenta que si cualquier otra secuencia de comandos se carga en la cabecera que tiene jQuery en sus dependencias, también hará que jQuery se cargue en la cabecera justo antes de la misma. Y esto es bueno y esperado, la razón por la que existe el sistema wp_enqueue.

    
respondido por el NextGenThemes 26.09.2016 - 22:50
-3

Oye, solo cambia tu código para que te guste esto

function starter_scripts() {
        wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
        wp_enqueue_script('jquery');
        wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', array( 'jquery' ) );
    }
    add_action( 'wp_enqueue_scripts', 'starter_scripts' );

Creo que funciona bien

agrega estas líneas en tu archivo functions.php

remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_enqueue_scripts', 5);

luego agrega script al pie de página

    
respondido por el Amit Mishra 30.12.2014 - 21:05

Lea otras preguntas en las etiquetas