Nu pot încărca script-urile în footer?

5 ian. 2012, 06:58:04
Vizualizări: 60.3K
Voturi: 11

Codexul WordPress spune:

(pagina veche din codex)

$in_footer

(boolean) (opțional) În mod normal script-urile sunt plasate în secțiunea head. Dacă acest parametru este true, script-ul este plasat la sfârșitul footer-ului. Acest lucru necesită ca tema să aibă hook-ul wp_footer() în locul potrivit. Reține că trebuie să înregistrezi script-ul înainte ca wp_head să fie executat, chiar dacă va fi plasat în footer. (Nou în WordPress 2.8) Implicit: false

Deci am adăugat true după fiecare src path al script-urilor:

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

Dar script-urile sunt încă incluse în header.

Aveți sugestii pentru a rezolva această problemă?

0
Toate răspunsurile la întrebare 6
3
21

Unde ai pus codul tău?

  1. argumentul "true" se pune în wp_register_script();, nu în wp_enqueue_script();

Funcția este:

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

ceea ce înseamnă

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

Exemplu:

<?php
wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true);
?>
  1. Theme-ul tău are <?php wp_footer(); ?> la sfârșitul paginii?

3. Adaugă acțiunea cu add_action('wp_print_scripts', 'your function');

Având în vedere acestea, cea mai bună practică ar fi:

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

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

5 ian. 2012 08:21:04
Comentarii

Mulțumesc, acum funcționează, dar am realizat că plasarea lui true fie în wp_enqueue, fie în wp-register_script funcționează la fel de bine.

wyc wyc
5 ian. 2012 17:43:18

@krembo99 Funcția wp_register_script() primește același număr de argumente și ambele adaugă în array-ul global $wp_scripts și subarray-ul data. Combinând informația greșită cu lizibilitatea groaznică a răspunsului tău, trebuie să îți dau un -1 (va fi eliminat la revizuire).

kaiser kaiser
5 ian. 2013 19:07:23

Pentru mine, piesa lipsă din puzzle a fost faptul că <?php wp_footer(); ?> nu exista în template-ul paginii. După aceea, parametrul true din wp_enqueue_script și-a făcut treaba.

joehanna joehanna
22 apr. 2019 04:34:23
1

Transmiteți o valoare booleană parametrului de dependență. Încercați astfel:

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

Acesta este tehnic răspunsul corect la întrebarea lui, bazat pe codul din întrebare.

AndyWarren AndyWarren
15 feb. 2018 22:29:52
0

Am avut aceeași problemă și după ce am căutat, mi-a lipsit această funcție în tema mea personalizată:

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

Aș dori să simplific răspunsul aici.. Când folosești wp_enqueue_script sau wp_register_script pentru a încărca un script în footer, trebuie să te asiguri că incluzi și ceilalți parametri, chiar dacă sunt goi.

Eu încercam..

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

Ceea ce nu a funcționat, așa cum a observat @janoChen. WordPress necesită

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

Deci trebuie să incluzi '', pentru parametrii pe care nu îi folosești dacă vrei să declari funcția inline. Prin urmare, codul de mai jos funcționează conform planului.

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

Ulterior, poți declara funcția într-un format de tip array, așa cum arată @Brian Fegter.

10 sept. 2014 18:33:19
Comentarii

Trebuie să furnizați șiruri goale doar acolo unde sunt necesare substituenți.

s_ha_dum s_ha_dum
30 sept. 2015 17:59:09

Ah da! Desigur, doar '', acolo unde parametrii sunt obligatorii, nu opționali.

Andrew-Sepic Andrew-Sepic
1 oct. 2015 21:45:41
0

Dacă încărcați un script în header, dar declarați o dependență față de un script încărcat în footer, WordPress va muta scriptul din footer în header pentru a-l face disponibil scripturilor dependente.

25 mar. 2015 04:24:40
0

Conform documentației oficiale WordPress (Ultima verificare - Mai 2018):

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

și experienței personale de peste 7 ani.

  1. Ar trebui să încercați să folosiți întotdeauna funcția 'wp_enqueue_scripts' pentru o mai bună compatibilitate cu plugin-urile/temele instalate.

    add_action('wp_enqueue_scripts','your_plugin_enqueue');
    
  2. Puteți găsi mai multe informații despre utilizare în documentația oficială aici

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Recomandare personală
             *  - Recomand insistent înregistrarea tuturor scripturilor înainte de încărcare,
             *  din nou -> pentru o mai bună compatibilitate cu alți dezvoltatori. 
             *  :::: De exemplu, astfel încât alții să poată manipula poziția 
             *       scripturilor tale folosind metoda wp_dequeue_*type*. 
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Documentație Oficială
             *   $in_footer
             *      - (bool) (Opțional) Dacă să încarce scriptul înainte de </body> în loc de <head>. Implicit 'false'.
             *      - Valoare implicită: false
             *
             ***/
    
             // exemple:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // elimină scriptul conflictual
    
             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încarcă scripturile după ale tale pentru eliminarea conflictelor
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');
    

P.S. Dacă considerați acest răspuns util, vă rog să-i acordați un '▲' (Săgeată în Sus), dacă credeți că poate fi îmbunătățit, vă rog să comentați mai jos.

16 mai 2018 11:36:41