Come aggiungere javascript prima del tag di chiusura body nel footer di WordPress

4 mag 2012, 17:56:55
Visualizzazioni: 35.4K
Voti: 9

Sto seguendo alcuni dei consigli degli altri utenti qui sull'aggiunta del mio file js prima del tag di chiusura body ma non sembra funzionare nel mio caso.

Qualcuno potrebbe gentilmente controllare questo codice per me?

<?php
  /*carica il file js nel footer*/
  function myscript() 
  {
   if( wp_script_is( 'jquery', 'done' ) ) {
  ?>
     <script type="text/javascript" src="js/scripts.js"></script>
  <?php
  }
 }
  add_action( 'wp_footer', 'myscript' );
?>

Grazie mille

MODIFICA:------------------------------------------------

Questa è la soluzione breve.. <script language="javascript" src="<?php bloginfo('template_directory'); ?>/js/scripts.js"></script>

ma non è la risposta corretta, vero?

MODIFICA---------------------------------------------------

Questo è quello che sto provando basandomi sugli esempi del codex WP e sui vostri suggerimenti Fischi ma penso di stare ancora facendo qualcosa di sbagliato..

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');

Il file continua a non caricarsi nel footer.

2
Commenti

Il file non si carica - significa che i tag <script> non compaiono nel footer - oppure che lo script non viene trovato? Infine, il tuo tema chiama wp_footer();

Stephen Harris Stephen Harris
4 mag 2012 21:00:00

Ciao Stephen. Il mio tema usa <?php get_footer(); ?>. Proverò con wp_footer(); e ti farò sapere. Grazie!

SixfootJames SixfootJames
5 mag 2012 07:32:55
Tutte le risposte alla domanda 1
4
19

Dovresti sempre aggiungere javascript (e stili) con la funzione di Wordpress wp_enqueue_script()

Funziona così:

wp_enqueue_script( 
 $handle // il nome del tuo file in coda, nel tuo caso 'myscript'
,$src    // sorgente del tuo file, può essere esterna o nel tuo esempio: get_bloginfo('template_directory') . '/js/scripts.js'
,$deps   // il tuo javascript dipende da un altro file javascript? per esempio jquery? passa un array di argomenti specificando tutte le dipendenze: array( 'jquery' )
,$ver   // numero di versione del tuo javascript
,$in_footer // questo è ciò di cui hai bisogno: true
);

Dopo aver impostato $in_footer su true, viene accodato nell'azione wp_footer(), di solito appena prima della chiusura del tag body.

Quindi, per te:

wp_enqueue_script( 'myscript', get_bloginfo('template_directory') . '/js/scripts.js', array( 'jquery' ), '', true );

fa al caso tuo.

Nota: Non tutti i temi (anche se dovrebbero) chiamano wp_footer(); nel loro footer / appena sopra il tag di chiusura </body>.

4 mag 2012 18:05:17
Commenti

Grazie mille Fischi. Vedi la mia modifica qui sopra... I commenti su StackExchange fanno schifo per quanto riguarda il markup pulito.

SixfootJames SixfootJames
4 mag 2012 19:39:52

Ciao Fischi. Il mio tema utilizza <?php get_footer(); ?>. Ho provato wp_footer(); ma non ha funzionato, il footer non appariva affatto.

SixfootJames SixfootJames
5 mag 2012 12:18:41

@SixfootJames nessun problema. nota che la differenza tra get_footer() e wp_footer() è che get_footer() richiama il file template footer.php, mentre wp_footer() è un'azione eseguita da wordpress per inserire tutti i javascript e gli stili che sono definiti per apparire nel footer. solitamente wp_footer() si trova nel footer.php, appena prima della chiusura del tag <body>.

fischi fischi
5 mag 2012 17:05:45

come ha menzionato Steven Harris, non tutti i temi chiamano wp_footer(). Se il tuo tema non lo include, inseriscilo prima del tag </body>.

fischi fischi
5 mag 2012 17:07:08