Metodo Corretto per Eseguire Script con Dipendenze senza Enqueue

18 lug 2014, 03:38:26
Visualizzazioni: 16.1K
Voti: 9

Con enqueue dovresti cambiare $deps con il tuo script o un array di script necessari per far funzionare il tuo script.

<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>

Per esempio:

function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

Di solito faccio così ma non sempre sembra funzionare:

function script_that_requires_jquery(){
    if ( wp_script_is( 'jquery', 'done' ) ) { ?>
        <script type="text/javascript">
        (function($) {
            // funzione jquery va qui    
        })( jQuery );
        </script>
    <?php }
}
add_action('wp_footer', 'script_that_requires_jquery');

Forse è questo?

function script_that_requires_jquery(){
    wp_enqueue_script( 'jquery' );
    ?>
        <script type="text/javascript">
        (function($) {
            // funzione jquery va qui    
        })( jQuery );
        </script>
    <?php 
}
add_action('wp_footer', 'script_that_requires_jquery');
0
Tutte le risposte alla domanda 2
0
function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

Questo è il metodo corretto per accodare gli script (e gli stili). Dovresti sempre utilizzare wp_enqueue_scripts per agganciare script e stili.

Ci sono alcune cose da verificare quando registri script e stili. Innanzitutto, assicurati che l'ordine in cui li inserisci nella tua funzione sia corretto. Il primo script nella funzione verrà eseguito per primo, il secondo dopo e così via. Quindi, non puoi posizionare il tuo script dipendente da jQuery prima di jQuery, non funzionerà.

L'altra potenziale trappola qui è add_action( $hook, $function_to_add, $priority, $accepted_args );. Senza impostare il parametro $priority, c'è sempre il rischio che il tuo script/stile venga caricato prima di altri script/stili che potrebbero sovrascriverlo.

Nel tuo caso, il tuo script potrebbe essere caricato prima di jQuery, quindi non funzionerà. Io sempre imposto questo parametro con una priorità molto bassa (numero molto alto) quando aggiungo script e stili personalizzati. Questo garantisce che i miei script e stili vengano caricati per ultimi. Quindi farò qualcosa come questo

add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery', 999 );
18 lug 2014 07:37:29
0

Non basta accodare jQuery (o qualsiasi altra libreria) prima del codice che dipende da jQuery, ma bisogna anche assicurarsi che jQuery sia caricato prima che il tuo codice venga analizzato/eseguito dal browser.

18 lug 2014 14:04:32