Cómo agregar javascript justo antes de la etiqueta de cierre body en el footer de WordPress

4 may 2012, 17:56:55
Vistas: 35.4K
Votos: 9

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.

2
Comentarios

El archivo no se carga - ¿Esto significa que las etiquetas <script> no aparecen en el pie de página - o que no se encuentra el script? Finalmente, ¿tu tema llama a wp_footer();

Stephen Harris Stephen Harris
4 may 2012 21:00:00

Hola Stephen. Mi tema está usando <?php get_footer(); ?>. Déjame probar wp_footer(); y te aviso. ¡Gracias!

SixfootJames SixfootJames
5 may 2012 07:32:55
Todas las respuestas a la pregunta 1
4
19

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>.

4 may 2012 18:05:17
Comentarios

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

SixfootJames SixfootJames
4 may 2012 19:39:52

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

SixfootJames SixfootJames
5 may 2012 12:18:41

@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>.

fischi fischi
5 may 2012 17:05:45

como mencionó steven harris, no todos los temas llaman a wp_footer(). si el tuyo no lo hace, insértalo antes de la etiqueta </body>.

fischi fischi
5 may 2012 17:07:08