web-dev-qa-db-fra.com

Vous ne pouvez pas mettre en attente les scripts dans le pied de page?

Le codex WordPress dit:

$ in_footer

(booléen) (facultatif) Normalement, les scripts sont placés dans la section. Si ce paramètre est vrai, le script est placé au bas de la fenêtre. Cela nécessite que le thème ait le hook wp_footer () à la place appropriée. Notez que vous devez mettre votre script en file d'attente avant l'exécution de wp_head, même s'il sera placé dans le pied de page. (Nouveau dans WordPress 2.8) Par défaut: false

J'ai donc ajouté true après le src path de chaque 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');

Mais les scripts sont toujours inclus dans l'en-tête.

Des suggestions pour résoudre ce problème?

8
janoChen

Où avez-vous mis votre code?

  1. les arguments "vrais" vont dans la wp_register_script();, pas dans la wp_enqueue_script() ;

la fonction est:

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

sens

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

PAR EXEMPLE.

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

  1. votre thème a-t-il <?php wp_footer(); ?> à la fin de la page?

3.ajouter l'action avec add_action('wp_print_scripts', 'your function');

Cela étant dit, votre meilleure pratique serait:

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

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

16
krembo99

Vous transmettez une valeur bool au paramètre dependency. Essaye ça:

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

J'ai eu le même problème et après quelques recherches, il me manquait cette fonction dans mon thème personnalisé:

 <?php wp_footer();?>
2
ImFarhad

J'aimerais simplifier la réponse ici. Lorsque vous utilisez wp_enqueue_script ou wp_register_script pour charger un script dans le pied de page, vous devez vous assurer d'inclure les autres paramètres, même s'ils sont vides.

J'essayais..

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

Ce qui n'a pas fonctionné comme l'a remarqué @janoChen. Wordpress appelle à

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

Vous devez donc inclure '', pour les paramètres que vous n'utilisez pas si vous voulez déclarer la fonction inline. Par conséquent, le code ci-dessous fonctionne comme prévu.

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

Ensuite, vous pouvez déclarer la fonction dans un tableau tel que le montre le format @Brian Fegter.

2
Andrew-ThinkUp

Si vous mettez un script en file d'attente dans l'en-tête mais déclarez une dépendance à un script placé en file d'attente dans le pied de page, WordPress déplace le script de pied de page dans l'en-tête pour le rendre disponible au (x) script (s) dépendant (s).

2
user3765755

Selon la documentation officielle de WordPress (dernière vérification - mai 2018):

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

et expérience personnelle de 7 ans et plus.

  1. Vous devriez essayer de toujours utiliser la fonction ' wp_enqueue_scripts ' pour une meilleure compatibilité avec les plugins/thèmes installés.

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
    
  2. Vous pouvez trouver plus d'informations sur l'utilisation de la documentation officielle Utilisation ici

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

P.S. Si vous trouvez cette réponse utile, donnez-lui un "▲" (ArrowUP), si vous pensez qu'elle peut être améliorée, veuillez commenter ci-dessous.

0
SergeDirect