Comment lier des fichiers jQuery / Javascript externes avec WordPress

14

Donc, j'utilise Starkers pour baser mon prochain thème WP et j'ai rencontré un petit problème. J'avais inclus ma propre version de jQuery dans le fichier header.php , mais lors de l'inspection de mon site à l'aide de Firebug, jquery deux fois, j’ai creusé un peu et j’ai remarqué que non seulement j’avais inclus le fichier, mais aussi la fonction wp_head() .

En essayant de résoudre le problème, j'ai remarqué qu'un commentaire dans le fichier d'en-tête venait du thème Twenty Ten:

/* Always have wp_head() just before the closing </head>
 * tag of your theme, or you will break many plugins, which
 * generally use this hook to add elements to <head>, such 
 * as styles, scripts, and meta tags
 */

Alors voici mon problème, j'ai l'impression que le fichier jQuery doit être défini avant tout autre fichier qui veut l'utiliser et que wp_head() devrait être la dernière chose de l'élément <head> , je suis légèrement confus maintenant car je me demande si je dois mettre wp_head() en haut pour que le fichier jQuery inclus dans le WP soit utilisé pour tous mes plugins, même s'il dit ne pas le faire.

J'ai mis en commentaire la ligne jQuery dans la fonction wp_head() , mais elle est obligatoire pour la page d'administration et j'ai donc dû la rétablir.

J'aimerais aussi (au moins expérimenter) utiliser la version Google CDN de jQuery, mais je ne veux pas l'inclure deux fois!

J'espère que vous comprenez ce que j'essaie d'expliquer. Toute suggestion sur la manière de résoudre ce problème serait très appréciée. J'apprécierais également tout conseil sur la façon dont vous gérez vos fichiers JavaScript avec le fichier d'en-tête.

Merci!

    
posée Ben Everard 17.08.2010 - 14:04

3 réponses

9

D'après le libellé de votre question, vous devez ajouter des scripts en écrivant des balises <script> dans votre modèle. Ajoutez vos propres scripts via wp_enqueue_script() dans le modèle functions.php de votre modèle, en définissant correctement les dépendances sur jQuery et wp_head() ajoutez les scripts pour vous.

function my_scripts() {
    wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
}
add_action('template_redirect', 'my_scripts');

Consultez la page du codex pour plus d'informations.

    
réponse donnée Annika Backstrom 17.08.2010 - 14:53
7

Je suggère de jeter un coup d'œil sur les 5 astuces pour utiliser jQuery avec WordPress . . Entre autres choses, il affiche le code nécessaire pour charger jQuery à partir de la bibliothèque de Google:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

Vous pouvez également consulter le plug-in Utiliser les bibliothèques Google .

    
réponse donnée Travis Northcutt 17.08.2010 - 16:01
1

Bien que @tnorthcutt soit correct, vous devez correctement retirer le jquery natif de WP si vous voulez charger le vôtre, vous êtes certain de rencontrer des problèmes lorsque vous chargez une version de jquery différente de WP core. Le noyau et les plugins dépendent de sa présence. Donc, si vous ne mettez pas à jour votre thème avec la dernière version de jQuery chaque fois que WP est mis à jour, votre site risque de se briser.

Le code suivant vous assurera que votre thème charge toujours la version correcte de jQuery. Recherchez tout d'abord la version utilisée par WP, puis chargez-la à partir de Google:

$wp_jquery_version = $GLOBALS['wp_scripts']->registered['jquery-core']->ver;
$jquery_version = ( $wp_jquery_version == '' ) ? '1.8.3' : $wp_jquery_version; // fallback, just in case 
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'. $jquery_version .'/jquery.min.js', $jquery_version, false );
wp_enqueue_script('jquery');
    
réponse donnée cjbj 31.10.2016 - 10:27

Lire d'autres questions sur les étiquettes