web-dev-qa-db-fra.com

Je ne vois pas pourquoi mes scripts ne se chargent pas lorsque je les enregistre et les mets en file d'attente

J'essaie de remplacer les appels "codés en dur" dans mon header.php en les enregistrant et en les mettant en file d'attente dans functions.php. JQuery 1.8.3 se charge comme vous le souhaitez, mais pas les autres scripts. Voici ce que j'utilise:

function puckpros_load_my_scripts() {  
    wp_deregister_script( 'jquery' );  
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');  
    wp_enqueue_script('jquery');  
    wp_register_script('menu', get_stylesheet_directory_uri().'/js/menu.js', array('jquery') );  
    wp_enqueue_script('menu');
    wp_register_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') );  
    wp_enqueue_script('kwicks');
    wp_register_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') );  
    wp_enqueue_script('equalheights');
}  

add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

C'est un thème enfant, j'utilise donc get_stylesheet_directory_uri () et les chemins d'accès aux fichiers sont corrects.

Je suis sûr que c'est quelque chose de simple, mais je ne vois pas ce que je fais mal.

Merci.

EDIT

Comme suggéré ci-dessous par Puce, j'ai modifié le fichier functions.php pour éliminer l'appel à jquery et supprimer les appels de registre. J'ai maintenant:

function puckpros_load_my_scripts() {  

     wp_enqueue_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') );

     wp_enqueue_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') );

     wp_enqueue_script('wslaunch', get_stylesheet_directory_uri().'/js/wsLaunch.js', array('jquery') );
}  

add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

Mais mon script n’a pas d’équivalent, mais je le ferai si je le charge directement dans l’en-tête comme ceci:

<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/jquery.kwicks.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/jquery.equalheights.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/wsLaunch.js"></script>

Maintenant, je suis encore perplexe. J'aimerais bien "le faire correctement" et mettre en file d'attente, mais je ne peux pas le faire fonctionner.

Merci pour toute aide.

1
user41091

Vous ne pouvez pas (bien, vous pouvez , mais vous rencontrerez probablement des problèmes de dépendance tels que celui-ci) désinscrivez un script à wp_enqueue_scripts qui était registered plus tôt et déjà utilisé comme dépendance.

La meilleure solution consiste à supprimer le code jQuery personnalisé et à ne compter que sur jQuery fourni avec le noyau. (Vous allez casser BEAUCOUP de choses qui chargent une version de jQuery non fournie avec le noyau; en particulier une version plus ancienne que la version principale - version groupée.)

function puckpros_load_my_scripts() {  
    wp_enqueue_script('menu', get_stylesheet_directory_uri().'/js/menu.js', array('jquery') );  
    wp_enqueue_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') ); 
    wp_enqueue_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') ); 
}  
add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

Remarque: pour simplifier, j'ai éliminé les appels wp_register_script(); ils sont redondants dans ce cas.

Mais si vous devez absolument annuler l'enregistrement de jQuery fourni avec le noyau pour enregistrer votre propre version, essayez de le faire à init.

function pleasedonotderegistercorejquery() { 
    wp_deregister_script( 'jquery' );  
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');  
    wp_enqueue_script('jquery');  
}
add_action( 'init', 'pleasedonotderegistercorejquery' );
2
Chip Bennett