Cum să adaugi un snippet javascript în footer care necesită jQuery

6 nov. 2011, 12:30:44
Vizualizări: 86.9K
Voturi: 30

Știu că pot adăuga un fișier script în footer-ul WordPress care necesită jquery folosind acest cod:

<?php
function my_scripts_method() {
   // înregistrează locația scriptului, dependențele și versiunea
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // încarcă scriptul
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Dar ce se întâmplă dacă vreau să adaug doar un snippet normal de jquery inline, nu un fișier. Cum poate fi făcut acest lucru.

Editare

Știu că pot folosi acest script pentru a adăuga ceva în footer:

<?php
function myscript() {
?>
<script type="text/javascript">
 // Acesta depinde de jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

Dar cum specific faptul că scriptul utilizat necesită jquery pentru a rula.

3
Comentarii

Nu există o funcție încorporată pentru a face asta, din câte știu, de aceea există wp_register_script și wp_enqueue_script, dar poți verifica folosind jQuery în sine.

Wyck Wyck
6 nov. 2011 17:42:50

Îmi pare rău pentru votul negativ, dar nu cred că înțelegeți întrebarea mea. Am citit codex-ul și știu despre opțiune. Dar nu vreau să încarc un fișier script în footer folosind wp_enqueue_script, ci vreau să adaug un fragment de cod în footer care necesită jQuery. Am votat negativ răspunsul luat direct din codex. Am citit codex-ul și nu am găsit un răspuns, de aceea am pus o întrebare. Dacă mă redirecționați din nou către codex, voi vota negativ.

Saif Bechan Saif Bechan
6 nov. 2011 17:46:09

Mulțumesc wyck, cred că acesta este cazul, mulțumesc că ai înțeles corect întrebarea. Cred că voi folosi un script JS extern pentru a mă asigura că scriptul poate fi executat.

Saif Bechan Saif Bechan
6 nov. 2011 17:47:09
Toate răspunsurile la întrebare 5
4
35

Cea mai ușoară metodă de a face acest lucru este de fapt o combinație între wp_enqueue_script și acțiunile din footer la care Saif și v0idless s-au referit deja. Folosesc frecvent jQuery în temele și plugin-urile mele, dar pun toate celelalte scripturi și în footer.

Cea mai bună metodă de a încărca aceste elemente ar fi următoarea:

function myscript() {
?>
<script type="text/javascript">
  if ( undefined !== window.jQuery ) {
    // script dependent pe jQuery
  }
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );

function myscript_jquery() {
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );

Dar acest fragment de cod presupune că tu ești cel care încarcă scriptul, adică faci acest lucru în propriul tău plugin sau temă.

În prezent, nu există nicio metodă de a adăuga un script inline în footerul WordPress și, în același timp, de a-l încărca cu dependințe. Dar există o alternativă, dacă ești dispus.

Alternativa

Când WordPress lucrează cu scripturi, le încarcă intern într-un obiect pentru a le ține evidența. Există practic 3 liste în interiorul obiectului:

  • înregistrate (registered)
  • coadă (queue)
  • finalizate (done)
  • de făcut (to_do)

Când înregistrezi pentru prima dată un script cu wp_register_scripts(), acesta este plasat în lista de înregistrate. Când folosești wp_enqueue_script(), scriptul este copiat în lista de coadă. După ce este afișat pe pagină, este adăugat în lista de finalizate.

Deci, în loc să încarci scriptul din footer cu dependința de jQuery, poți documenta că acesta trebuie să folosească jQuery și să verifici programatic dacă jQuery este încărcat.

Această metodă folosește wp_script_is() pentru a verifica unde se află scriptul în listă.

function myscript() {
    if( wp_script_is( 'jquery', 'done' ) ) {
    ?>
    <script type="text/javascript">
      // script dependent pe jQuery
    </script>
    <?php
    }
}
add_action( 'wp_footer', 'myscript' );

S-ar putea să poți folosi același cod pentru a forța încărcarea jQuery în footer, dar nu am testat acest lucru... deci rezultatele pot varia.

6 nov. 2011 19:22:45
Comentarii

fragmentul de cod pe care l-ai furnizat este acceptat conform standardelor de dezvoltare a plugin-urilor WordPress? Dacă da, atunci îl voi folosi în plugin-ul meu... te rog să îmi dai un răspuns în legătură cu asta...

laraib laraib
19 oct. 2016 17:08:49

Ultimul fragment? Nu. Plugin-urile WordPress ar trebui să încarce întotdeauna cerințele de scripturi folosind sistemul de coadă. Forțarea încărcării jQuery în afara sistemului de coadă în acest fel este ceva ce ar trebui să faci doar pe propriul site, unde controlezi 100% mediul. Nu este niciodată potrivit ca un plugin să facă asta.

EAMann EAMann
20 oct. 2016 07:51:20

atunci poți să îmi dai un exemplu funcțional pentru asta, te rog...????

laraib laraib
20 oct. 2016 08:41:16

Deoarece dezvolt primul meu plugin WordPress și mi-ar plăcea ca acesta să fie acceptat de echipa WordPress... aștept orice răspuns din partea voastră vă rog... spuneți-vă părerea despre acest lucru, astfel încât să pot crea și avea acceptat pluginul meu...

laraib laraib
20 oct. 2016 08:42:11
0
15

Începând cu WordPress 4.5, puteți adăuga scripturi inline folosind wp_add_inline_script(). Pentru a adăuga un fragment de cod JavaScript în footer care necesită jQuery, acest cod vă poate ajuta:

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

wp_add_inline_script cu jQuery în WordPress

25 iun. 2016 09:44:41
1

Folosește acțiunea wp_footer astfel:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSEREAZĂ SCRIPTUL AICI **/
</script>
<?php
}
6 nov. 2011 16:17:10
Comentarii

Acesta nu este un răspuns bun. Am întrebat cum pot specifica că scriptul necesită jQuery. Dacă utilizatorul nu are jQuery rulând, implementarea ta nu va funcționa.

Saif Bechan Saif Bechan
6 nov. 2011 16:18:34
0

Știu că OP dorește să specifice o cerință pentru jQuery, iar autorii WordPress ar fi trebuit să permită includerea fragmentelor de cod alături de fișierele de script, dar nu au făcut-o, așa că recomand să nu încercați să forțați acest lucru. Dacă nu doriți să vă amestecați în coadă sau în ordinea ei, ca mine (pentru că folosesc alte plugin-uri care combină și optimizează scripturile), atunci răspunsul este să utilizați acțiunea wp_footer astfel:

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // fragmentul tău de cod
            }
        </script>
        <?php
    }
    , 21 # după scripturile încărcate în footer
);
25 iul. 2018 12:56:07
2
-1

Poți folosi acțiunea wp_footer pentru a face acest lucru. Consultă codex-ul pentru wp_footer.

6 nov. 2011 15:30:47
Comentarii

Știu, dar cum poți specifica că scriptul pe care îl adaugi în footer depinde de jQuery. Verifică ediția mea pentru a fi mai specific.

Saif Bechan Saif Bechan
6 nov. 2011 16:14:28

Chiar te deranjezi să citești în Codex înainte de a da voturi negative la răspunsurile oamenilor? Ai citit vreodată despre argumentul in_footer pentru wp_enqueue_script? Citește asta: http://codex.wordpress.org/Function_Reference/wp_enqueue_script. Îți explică cum să-l folosești cu acțiunea wp_footer.

Rutwick Gangurde Rutwick Gangurde
6 nov. 2011 17:42:21