WordPress : Décrocher jQuery de WooCommerce via `functions.php` ?
J’utilise donc le plugin http://woothemes.com/woocommerce/ pour le commerce électronique et il enregistre jQuery local et est en conflit avec mon appel jQuery par défaut de Google CDN.
Cela a pris beaucoup de temps mais j’ai isolé le problème dans les lignes de code suivantes dans woocommerce.php
:
$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
$lightbox_en = (get_option('woocommerce_enable_lightbox')=='yes') ? true : false;
$chosen_en = (get_option('woocommerce_enable_chosen')=='yes') ? true : false;
$jquery_ui_en = (get_option('woocommerce_enable_jquery_ui')=='yes') ? true : false;
$scripts_position = (get_option('woocommerce_scripts_position') == 'yes') ? true : false;
// Woocommerce.min.js is minified and contains woocommerce_plugins
wp_enqueue_script( 'woocommerce', $this->plugin_url() . '/assets/js/woocommerce'.$suffix.'.js', array('jquery'), '1.0', $scripts_position );
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
wp_enqueue_script( 'woocommerce_plugins', $this->plugin_url() . '/assets/js/woocommerce_plugins'.$suffix.'.js', array('jquery'), '1.0', $scripts_position );
}
Les supprimer annule l’appel jQuery en double qui me cause tous mes maux de tête. J’ai ce qui suit functions.php
pour retirer jQuery de l’en-tête, mais pour une raison quelconque, il persiste et refuse de disparaître ! :/ Des idées sur la façon de tuer l’appel jQuery local de l’intérieur functions.php
? Y a-t-il quelque chose qui ne va pas avec mon code ? :
// dequeue jquery from header
function theme_slug_dequeue_header_jquery() {
wp_dequeue_script( 'jquery' );
}
add_action( 'wp_header', 'theme_slug_dequeue_header_jquery', 11 );
Solution n°1 trouvée
J’avais un problème similaire et je suis tombé sur ce fil.
Mon problème était que WooCommerce 2.0.5 enregistrait jQuery par lui-même et cela cassait mes propres scripts jQuery, créant un conflit avec mon processus functions.php deregister/register/enqueue.
Après plusieurs tentatives, j’ai remarqué que je n’incluais pas la version jQuery dans ma fonction. Après l’avoir spécifiquement ajouté, le problème a été résolu.
Voici ce que fait woocommerce/woocommerce.php (ligne 1214) :
public function check_jquery() {
global $wp_scripts;
// Enforce minimum version of jQuery
if ( isset( $wp_scripts->registered['jquery']->ver ) && $wp_scripts->registered['jquery']->ver < '1.7' ) {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.7' );
wp_enqueue_script( 'jquery' );
}
}
Et c’est ainsi que je le remplace dans mon fichier functions.php
function my_scripts_method() {
wp_deregister_script( 'jquery' );
wp_register_script(
'jquery',
'http://code.jquery.com/jquery.js',
false,
'1.9.1' // IMPORTANT: declare jQuery version
);
wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
J’espère que cela pourra aider quelqu’un d’autre 🙂
Solution n°2 trouvée
En fait, il semble que votre appel jquery soit erroné. Vous devez toujours utiliser wp_enqueue_script, sinon vous demandez des conflits. Ne l’appelez pas manuellement.
Les lignes que vous avez collées à partir de WooCommerce ne chargent pas directement jquery – elles le chargent en définissant les dépendances pour les autres scripts. WordPress s’occupe du reste.
Si vous souhaitez utiliser jQuery à partir d’un CDN, désenregistrez-le et réenregistrez-le avec la version CDN. Plutôt que de vous coller le code je vais vous diriger vers l’exemple suivant qui explique comment :
http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/
0 commentaire