web-dev-qa-db-fra.com

Wordpress Jquery Conflict with Plugin

Hé les gars, merci d'avance pour votre aide. J'ai fait mes recherches et je suis un peu perplexe avec ça ...

Je construis un site Web Wordpress pour un client et il va avoir un magasin en ligne. J'utilise wp-ecommerce. Toutes les pages du magasin se chargent avec une erreur javascript:

http://www.thecollectiveclothingco.com/products-page/t-shirts/

jQuery("form.product_form").livequery is not a function
[Break On This Error] jQuery("form.product_form").livequery(function(){ 

Après une longue période de recherche sur Google, je pense avoir diagnostiqué le problème comme un conflit de script. En d'autres termes, soit WP, soit le plugin lui-même est en train de servir jquery, et je l'inclue également pour d'autres éléments sur le site. Lorsque je supprime mon appel de script jQuery, le problème disparaît et le magasin fonctionne correctement. Mais j'ai besoin de ça jquery ...

J'ai lu sur l'utilisation de WP enqeue pour résoudre le problème:

function my_init_method() {
    if (!is_admin()) {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js');
        wp_enqueue_script( 'jquery' );
    }
}    
add_action('init', 'my_init_method');php wp_head(); 

Je crois que j'ai bien fait, mais ne semble rien réparer.

Des idées? Merci encore.

MODIFIER:

Bon, j'ai compris ... c'était le script de mise en file d'attente qui corrigeait les choses. Je wp (tête); devait venir avant la partie de désenregistrement et de mise en file d'attente. Je dois avoir mal lu la documentation. Voici ce que j'ai ajouté à mon en-tête:

<?php
wp_head();
wp_deregister_script('jquery');
wp_enqueue_script('jquery', MYURL .'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', FALSE, '1.4.4');
 ?>
1
Redlist

Il existe actuellement deux copies de jQuery chargées sur le site:

  1. En-tête, jQuery est fourni avec WordPress, probablement demandé par un plugin.
  2. En bas de page, il y a jQuery de Google CDN, probablement ajouté par votre code?

Évidemment c'est un de trop. Il y a deux façons de le gérer:

  1. Si l'utilisation de la copie groupée vous convient, vous devez enregistrer/mettre en file d'attente vos scripts et déclarer jquery dans les dépendances. Voir Codex: wp_register_script() , argument $deps.
  2. Vous pouvez ré-enregistrer jQuery sur Google CDN. Cela reste une bonne idée d’enregistrer votre script avec comme dépendance.

Votre code semble bien sauf que ceci à la fin de php wp_head();, php n'a aucun sens, et l'appel de wp_head() devrait être dans le thème.

3
Rarst

Il y a une bonne solution à cela sur le site de ce mec: http://www.mogmachine.com/stop-wordpress-loading-jquery-in-wp_head/

Ce qui est résolu en mettant le désenregistrement de jquery, appelez votre propre source, réenregistrez les commandes jquery dans votre functions.php dans votre thème. Vous pouvez éviter les plugins et les collisions en appelant simplement le vôtre au lieu de celui de WP.

Travaillé pour moi.

0
Judd