Cum să adaugi javascript înainte de închiderea tag-ului body în footer-ul WordPress

4 mai 2012, 17:56:55
Vizualizări: 35.4K
Voturi: 9

Urmez sfaturile altor persoane de aici despre adăugarea fișierului js înainte de închiderea tag-ului body, dar nu pare să funcționeze în cazul meu.

Ar putea cineva să verifice acest cod pentru mine?

<?php
  /*încarcă fișierul js în footer*/
  function myscript() 
  {
   if( wp_script_is( 'jquery', 'done' ) ) {
  ?>
     <script type="text/javascript" src="js/scripts.js"></script>
  <?php
  }
 }
  add_action( 'wp_footer', 'myscript' );
?>

Mulțumesc mult

EDITARE:------------------------------------------------

Aceasta este soluția scurtă.. <script language="javascript" src="<?php bloginfo('template_directory'); ?>/js/scripts.js"></script>

dar nu este răspunsul corect, nu-i așa?

EDITARE---------------------------------------------------

Iată ce încerc eu bazat pe exemplele din WP Codex și punctele tale Fischi, dar cred că încă fac ceva greșit..

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

Fișierul tot nu se încarcă în footer.

2
Comentarii

Fișierul nu se încarcă - înseamnă asta că tag-urile <script> nu apar în subsol - sau scriptul nu este găsit? În final, tema ta apelează wp_footer();?

Stephen Harris Stephen Harris
4 mai 2012 21:00:00

Salut Stephen. Tema mea folosește <?php get_footer(); ?>. O să încerc wp_footer(); și revin cu rezultate. Mulțumesc!

SixfootJames SixfootJames
5 mai 2012 07:32:55
Toate răspunsurile la întrebare 1
4
19

Ar trebui să adaugi întotdeauna JavaScript (și stiluri) folosind funcția WordPress wp_enqueue_script().

Funcționează astfel:

wp_enqueue_script( 
 $handle // numele fișierului tău încărcat, în cazul tău 'myscript'
,$src    // sursa fișierului tău, poate fi externă sau pentru exemplul tău: get_bloginfo('template_directory') . '/js/scripts.js'
,$deps   // scriptul tău JavaScript depinde de alt fișier JavaScript? de exemplu jQuery? treci un array cu toate dependențele: array( 'jquery' )
,$ver   // numărul versiunii pentru JavaScript-ul tău
,$in_footer // aceasta este opțiunea de care ai nevoie: true
);

După ce setezi $in_footer la true, acesta va fi încărcat în acțiunea wp_footer(), de obicei chiar înainte de închiderea tag-ului body.

Deci, pentru tine:

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

face treaba.

Notă: Nu toate temele apelează (deși ar trebui să o facă) funcția wp_footer(); în subsolul lor / chiar înainte de tag-ul de închidere </body>.

4 mai 2012 18:05:17
Comentarii

Mulțumesc mult Fischi. Vezi ediția mea de mai sus... Comentariile StackExchange sunt proaste la markup curat.

SixfootJames SixfootJames
4 mai 2012 19:39:52

Salut Fischi. Tema mea folosește <?php get_footer(); ?>. Am încercat wp_footer(); dar nu a funcționat, footer-ul nu a apărut deloc.

SixfootJames SixfootJames
5 mai 2012 12:18:41

@SixfootJames nicio problemă. reține că diferența dintre get_footer() și wp_footer() este că get_footer() încarcă fișierul template footer.php, în timp ce wp_footer() este o acțiune efectuată de WordPress pentru a insera fiecare javascript și stil care sunt definite să apară în footer. De obicei wp_footer() este plasat în footer.php, chiar înainte de închiderea tag-ului </body>.

fischi fischi
5 mai 2012 17:05:45

așa cum a menționat Steven Harris, nu toate temele apelează wp_footer(). dacă tema ta nu o face, inserează acest cod înainte de tag-ul </body>.

fischi fischi
5 mai 2012 17:07:08