Impossibile accodare gli script nel footer?

5 gen 2012, 06:58:04
Visualizzazioni: 60.3K
Voti: 11

Il codex di WordPress dice:

(vecchia pagina del codex)

$in_footer

(booleano) (opzionale) Normalmente gli script vengono posizionati nella sezione. Se questo parametro è true lo script viene posizionato in fondo al. Questo richiede che il tema abbia l'hook wp_footer() nel punto appropriato. Nota che devi accodare il tuo script prima che wp_head venga eseguito, anche se verrà posizionato nel footer. (Novità in WordPress 2.8) Predefinito: false

Quindi ho aggiunto true dopo ogni src path dello script:

/**
     * JavaScript
     */

    function my_scripts_method() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
        wp_enqueue_script( 'jquery' );
    }

    add_action('wp_enqueue_scripts', 'my_scripts_method');

    function media_queries_script() {
        wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
        wp_enqueue_script( 'mediaqueries' );
    }

    add_action('wp_enqueue_scripts', 'media_queries_script');

    function custom_script() {
        wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
        wp_enqueue_script( 'custom' );
    }

    add_action('wp_enqueue_scripts', 'custom_script');

    function replace_script() {
        wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
        wp_enqueue_script( 'replace' );
    }

    add_action('wp_enqueue_scripts', 'replace_script');

Ma gli script vengono ancora inclusi nell'header.

Qualche suggerimento per risolvere?

0
Tutte le risposte alla domanda 6
3
21

Dove hai messo il tuo codice?

  1. L'argomento "true" va in wp_register_script();, non in wp_enqueue_script();

La funzione è:

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

che significa

    <?php wp_enqueue_script('NomeMioScript', 'percorso/al/MioScript', 
'dipendenze_MioScript', 'VersioneMioScript', 'InfooterVeroOFalso'); ?>

ESEMPIO:

<?php wp_enqueue_script('mio_script', WP_CONTENT_URL . 'plugins/mio_plugin/mio_script.js', array('jquery', 'altro_script'), '1.0.0', true); ?>

  1. Il tuo tema ha <?php wp_footer(); ?> alla fine della pagina?

3. Aggiungi l'azione con add_action('wp_print_scripts', 'tua_funzione');

Detto questo, la tua best practice sarebbe:

<?php  
if (function_exists('carica_i_miei_script')) {  
    function carica_i_miei_script() {  
        if (!is_admin()) {  
        wp_deregister_script( 'jquery' );  
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');  
        wp_enqueue_script('jquery');  
        wp_register_script('mioscript', bloginfo('template_url').'/js/mioScript.js'__FILE__), array('jquery'), '1.0', true );  
        wp_enqueue_script('mioscript');  
        }  
    }  
}  
add_action('init', 'carica_i_miei_script');  
?>  

oppure add_action('wp_print_scripts', 'registra_js_dl');

5 gen 2012 08:21:04
Commenti

Grazie, ora funziona, ma ho notato che inserire true sia in wp_enqueue che in wp-register_script funziona bene.

wyc wyc
5 gen 2012 17:43:18

@krembo99 La funzione wp_register_script() accetta lo stesso numero di argomenti e entrambe aggiungono all'array globale $wp_scripts e al subarray data. Combinando le informazioni errate con la scarsa leggibilità della tua risposta, devo darti un -1 (verrà rimosso in caso di revisione).

kaiser kaiser
5 gen 2013 19:07:23

Per me il pezzo mancante del puzzle era che <?php wp_footer(); ?> non esisteva nel template della pagina. Dopo averlo aggiunto, il parametro true in wp_enqueue_script ha fatto il suo lavoro.

joehanna joehanna
22 apr 2019 04:34:23
1

Stai passando un valore booleano al parametro della dipendenza. Prova così:

wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);
5 gen 2012 08:21:17
Commenti

Tecnicamente, questa è la risposta corretta alla sua domanda basata sul codice presente nella domanda.

AndyWarren AndyWarren
15 feb 2018 22:29:52
0

Avevo lo stesso problema e dopo aver fatto alcune ricerche mi mancava questa funzione nel mio tema personalizzato:

<?php wp_footer();?>
15 ott 2018 15:21:39
2

Vorrei semplificare la risposta qui... Quando si utilizza wp_enqueue_script o wp_register_script per caricare uno script nel footer, è necessario assicurarsi di includere anche gli altri parametri, anche se sono vuoti.

Stavo provando..

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js',  true);

Il che non ha funzionato, come ha notato @janoChen. WordPress richiede

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

Quindi è necessario includere '', per i parametri che non si stanno utilizzando se si vuole dichiarare la funzione in linea. Di conseguenza, il codice seguente funziona come previsto.

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);

Successivamente è possibile dichiarare la funzione in formato array come mostra @Brian Fegter.

10 set 2014 18:33:19
Commenti

Devi fornire le stringhe vuote solo dove sono necessari segnaposto.

s_ha_dum s_ha_dum
30 set 2015 17:59:09

Ah sì! Certo, solo '', dove i parametri sono obbligatori, non opzionali.

Andrew-Sepic Andrew-Sepic
1 ott 2015 21:45:41
0

Se si accoda uno script nell'header ma si dichiara una dipendenza da uno script accodato nel footer, WordPress sposterà lo script del footer nell'header per renderlo disponibile agli script dipendenti.

25 mar 2015 04:24:40
0

Secondo la documentazione ufficiale di WordPress (Ultimo controllo - Maggio 2018):

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

e un'esperienza personale di oltre 7 anni.

  1. Dovresti sempre cercare di utilizzare la funzione 'wp_enqueue_scripts' per una migliore compatibilità con plugin/temi installati.

    add_action('wp_enqueue_scripts','your_plugin_enqueue');
    
  2. Puoi trovare maggiori informazioni sulla documentazione ufficiale Utilizzo qui

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Raccomandazione personale
             *  - Raccomando vivamente di registrare tutti gli script prima di accodarli,
             *  di nuovo -> per una migliore compatibilità con altri sviluppatori.
             *  :::: Per esempio, così altri potrebbero manipolare la posizione
             *       dei tuoi script usando il metodo wp_dequeue_*type*.
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Documentazione Ufficiale
             *   $in_footer
             *      - (bool) (Opzionale) Se accodare lo script prima di </body> invece che nel <head>. Predefinito 'false'.
             *      - Valore predefinito: false
             *
             ***/
    
             // esempi:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // rimuove script in conflitto
    
             wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); 
             wp_enqueue_script($handle);
             wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true);  // ri-accoda gli script dopo il tuo per esempio per eliminare i conflitti
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');
    

P.S. Se trovi questa risposta utile, per favore dai un '▲' (FrecciaSU), se pensi che possa essere migliorata, commenta qui sotto.

16 mag 2018 11:36:41