web-dev-qa-db-fra.com

Ignorer le Javascript de WooCommerce Frontend

Quelqu'un peut-il me guider sur la méthode appropriée pour remplacer les fichiers Javascript de base de WooCommerce, en particulier les fichiers frontaux. Je n'ai trouvé aucune documentation à ce sujet et en regardant le code, le chemin d'accès aux fichiers de script frontaux est codé en dur dans le plugin, donc je doute que placer un dossier d'actifs dans mon thème fera n'importe quoi.

Quelle est la façon la plus simple de procéder pour que je puisse charger un fichier situé dans mon répertoire de thème?

Merci

25
Sebastien

J'ai eu le même problème sauf avec add-to-cart.js. La solution simple consiste à DEQUEUE le script woocommerce et ENQUEUE votre remplacement. Dans mon cas, j'ai ajouté ce qui suit à mes fonctions.php:

wp_dequeue_script('wc-add-to-cart');
wp_enqueue_script( 'wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), false, true );

Vous voudrez SUPPRIMER le script 'wc-add-to-cart-variation'. Je ne pense pas que vous ayez pour ENQUEUE avec le même nom, mais je ne voyais pas de raison de ne pas le faire.

J'espère que cela t'aides.

Si vous utilisez WordPress version 4.0.1 et WooCommerce version 2.2.10. Vous pouvez utiliser les scripts suivants:


wp_deregister_script('wc-add-to-cart');
wp_register_script('wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), WC_VERSION, TRUE);
wp_enqueue_script('wc-add-to-cart');
30
Simon Unger

WooCommerce charge les scripts et styles frontaux dans le fichier class-wc-frontend-scripts.php, Et on peut trouver comment les scripts sont enregistrés, mis en file d'attente, localisés et dépendances.

L'endroit préféré pour mettre les scripts en file d'attente dans Wordpress est le crochet d'action wp_enqueue_scripts, Car c'est le moment après Wordpress est entièrement chargé mais avant tout Et j'aime aussi mettre en file d'attente tous mes scripts et styles associés dans une seule section de code.

Lorsque vous souhaitez supprimer complètement certains scripts, appeler wp_deregister_script() ou wp_dequeue_script() suffit. Mais parfois, si vous souhaitez apporter des modifications et laisser les dépendances, les variables et la localisation existantes, il y a un problème car les plugins sont chargés avant les thèmes. Les fonctions de mise en file d'attente ne fonctionneront donc pas comme prévu. wp_dequeue_script() => wp_enqueue_script() simple ne fonctionnera pas , wp_deregister_script() => wp_register_script () fonctionnera, mais les données localisées seront perdues.


Cela peut être résolu en travaillant directement avec l'objet global $wp_scripts Qui contient et gère tous les scripts chargés via wp_enqueue_script() ou enregistrés avec wp_register_script():

    add_action( 'wp_enqueue_scripts', 'load_theme_scripts' );

    function load_theme_scripts() {
        global $wp_scripts; 
        $wp_scripts->registered[ 'wc-add-to-cart' ]->src = get_template_directory_uri() . '/woocommerce/js/wc-add-to-cart.js';
    }
21
Danijel

Ajoutez cette section à votre fonction.php

function themeslug_enqueue_script() {
wp_enqueue_script( 'add-to-cart-variation', get_bloginfo( 'url' ). '/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.js', false );
}
add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_script' );
1
Ritcher