Non riesci ad accodare gli script nel piè di pagina?


10

Il codice WordPress dice :

( vecchia pagina del codice )

$ in_footer

(booleano) (opzionale) Normalmente gli script vengono inseriti nella sezione. Se questo parametro è true, lo script viene posizionato nella parte inferiore di. Ciò richiede che il tema abbia l'hook wp_footer () nella posizione appropriata. Si noti che è necessario accodare lo script prima di eseguire wp_head, anche se verrà inserito nel piè di pagina. (Novità in WordPress 2.8) Impostazione predefinita: false

Quindi ho aggiunto truedopo ogni script src path:

/**
     * 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 sono ancora inclusi nell'intestazione.

Qualche suggerimento per risolverlo?

Risposte:


18

Dove hai inserito il tuo codice?

  1. gli argomenti "veri" vanno nel wp_register_script();, non nelwp_enqueue_script() ;

le funzioni sono:

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

significato

    <?php wp_enqueue_script('NameMySccript', 'path/to/MyScript', 
'dependencies_MyScript', 'VersionMyScript', 'InfooterTrueorFalse'); ?>

PER ESEMPIO

<?php wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true); ?>

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

3.aggiungere l'azione con add_action('wp_print_scripts', 'your function');

Detto questo, la tua migliore pratica sarebbe:

<?php  
if (function_exists('load_my_scripts')) {  
    function load_my_scripts() {  
        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('myscript', bloginfo('template_url').'/js/myScript.js'__FILE__), array('jquery'), '1.0', true );  
        wp_enqueue_script('myscript');  
        }  
    }  
}  
add_action('init', 'load_my_scripts');  
?>  

o add_action('wp_print_scripts', 'dl_register_js');


Grazie, ora funziona ma mi sono reso conto che inserendo l' trueuno wp_enqueueo l'altro wp-register_scriptfunziona bene.
JanChen

4
@ krembo99 The wp_register_script()accetta la stessa quantità di argomenti ed entrambi si aggiungono $wp_scriptsall'array globale e al datasubarray. Combinando le informazioni sbagliate con la terribile leggibilità della tua risposta, devo darti un -1 (verrà rimosso alla rilavorazione).
Kaiser

1
Per me il pezzo mancante del puzzle <?php wp_footer(); ?>non esisteva nel modello di pagina. Successivamente, il trueparametro in ha wp_enqueue_scriptfatto il suo lavoro.
joehanna,

6

Stai passando un valore bool al parametro di dipendenza. Prova questo:

 wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);

2
Questa è tecnicamente la risposta giusta per la sua domanda basata sul codice nella domanda.
AndyWarren,

4

Ho avuto lo stesso problema e dopo aver fatto qualche ricerca mi mancava questa funzione nel mio tema personalizzato:

 <?php wp_footer();?>

3

Vorrei semplificare la risposta qui. Quando si utilizza wp_enqueue_script o wp_register_script per caricare uno script nel piè di pagina, è 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);

Che non ha funzionato come ha notato @janoChen. Wordpress richiede

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

Quindi devi includere '',per i parametri che non stai usando se vuoi dichiarare la funzione in linea. Pertanto, il codice seguente funziona come previsto.

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

Successivamente puoi dichiarare la funzione in un array come un formato come mostra @Brian Fegter.


Devi fornire le stringhe vuote solo dove sono necessari i segnaposto.
s_ha_dum,

Ah sì! Naturalmente, solo '',dove sono richiesti parametri, non facoltativi.
Andrew-ThinkUp,

2

Se accoda uno script all'intestazione ma dichiari una dipendenza da uno script accodato al piè di pagina, WordPress sposta lo script del piè di pagina nell'intestazione per renderlo disponibile agli script dipendenti.


1

Secondo la documentazione ufficiale di WordPress (ultimo controllo - maggio 2018):

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

ed esperienza personale di 7+ anni.

  1. Dovresti sempre provare a usare la funzione ' wp_enqueue_scripts ' per una migliore compatibilità con i plugin / temi installati.

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
  2. Puoi trovare ulteriori informazioni sull'utilizzo dei documenti ufficiali Utilizzo qui

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Personal recommendation
             *  - I strongly recommend registering all scripts before enqueueing,
             *  again -> for better compatibility with other developers. 
             *  :::: For example, so others could manipulate the position 
             *       of your scripts using the wp_dequeue_*type* method. 
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Official Docs
             *   $in_footer
             *      - (bool) (Optional) Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
             *      - Default value: false
             *
             ***/
    
             // examples:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // remove conflicting script
    
             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);  // re-enqueue scripts after yours for example to elimination of conflicts
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');
    

PS Se trovi utile questa risposta, ti preghiamo di dargli un '▲' ( ArrowUP ), se ritieni che possa essere migliorata, commenta di seguito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.