Décrocher jQuery de WooCommerce via `functions.php`?
J'utilise donc le http://woothemes.com/woocommerce/ plugin pour le commerce électronique et enregistre jQuery en local et entre en conflit avec mon appel jQuery par défaut à partir de CDN Google.
Cela a pris beaucoup de temps mais j'ai isolé le problème des 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 );
}
Leur suppression annule l'appel jQuery en double qui me cause tous mes maux de tête. J'ai le code suivant dans functions.php
pour retirer jQuery de l'en-tête, mais pour une raison quelconque, il persiste et refuse de partir! :/Des idées sur la manière de tuer l'appel jQuery local à partir de functions.php
? Y at-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 );
En fait, il semble que votre appel ait mal tourné. Vous devriez toujours utiliser wp_enqueue_script, sinon vous demandez des conflits. Ne l'appelle pas manuellement.
Les lignes que vous avez collées dans WooCommerce ne chargent pas directement jquery - elles le chargent en définissant les dépendances des autres scripts. WordPress gère le 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 vous dirigerai vers l'exemple suivant qui explique comment:
http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/
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 cédait mes propres scripts jQuery, créant un conflit avec mon processus de suppression/enregistrement/mise en file d'attente de functions.php.
Après plusieurs tentatives, j'ai remarqué que je n'incluais pas la version de jQuery dans ma fonction. Après l'ajout spécifique, 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 voici comment 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 pourrait aider quelqu'un d'autre :)