Cómo agregar javascript justo antes de la etiqueta de cierre body en el footer de WordPress
Estoy siguiendo algunos de los consejos de otras personas aquí sobre cómo agregar mi archivo js antes de la etiqueta de cierre body pero no parece funcionar para mí.
¿Alguien sería tan amable de revisar esto por mí?
<?php
/*cargar el archivo js en el footer*/
function myscript()
{
if( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript" src="js/scripts.js"></script>
<?php
}
}
add_action( 'wp_footer', 'myscript' );
?>
Muchas gracias
EDICIÓN:------------------------------------------------
Esta es la solución corta..
<script language="javascript" src="<?php bloginfo('template_directory'); ?>/js/scripts.js"></script>
pero no es la respuesta correcta, ¿verdad?
EDICIÓN---------------------------------------------------
Esto es lo que estoy intentando basándome en los ejemplos del codex de WP y tus puntos Fischi, pero creo que todavía estoy haciendo algo mal..
function my_scripts_method() {
wp_enqueue_script(
'myscript',
get_bloginfo('template_directory') . '/js/scripts.js',
array( 'jquery' ),
'',
true
);
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
El archivo aún no se carga en el footer.

Debes siempre agregar javascript (y estilos) con la función de WordPress wp_enqueue_script()
Funciona así:
wp_enqueue_script(
$handle // el nombre de tu archivo en cola, en tu caso 'myscript'
,$src // fuente de tu archivo, puede ser externa o en tu ejemplo: get_bloginfo('template_directory') . '/js/scripts.js'
,$deps // ¿tu javascript depende de otro archivo javascript? por ejemplo jquery? pasa un array de argumentos especificando todas las dependencias: array( 'jquery' )
,$ver // número de versión de tu javascript
,$in_footer // esto es lo que necesitas: true
);
después de configurar $in_footer
como true, se pone en cola en la acción wp_footer()
, usualmente justo antes del cierre de la etiqueta body.
así que, para ti:
wp_enqueue_script( 'myscript', get_bloginfo('template_directory') . '/js/scripts.js', array( 'jquery' ), '', true );
hace el truco.
Nota: No todos los temas (aunque todos los temas deberían) llaman a wp_footer();
en su pie de página / justo antes de la etiqueta de cierre </body>
.

Muchas gracias Fischi. Mira mi edición arriba... Los comentarios de StackExchange son malos para un markup limpio.

Hola Fischi. Mi tema está usando <?php get_footer(); ?>. He intentado con wp_footer(); pero no funcionó, el footer no apareció en absoluto.

@SixfootJames no hay problema. Ten en cuenta que la diferencia entre get_footer()
y wp_footer()
es que get_footer()
llama al archivo de plantilla footer.php
, mientras que wp_footer()
es una acción realizada por WordPress para insertar todo el javascript y estilos que están definidos para aparecer en el footer. Normalmente wp_footer()
se ubica en el footer.php
, justo antes del cierre de la etiqueta </body>
.
