2012-08-07 5 views
21

Può qualcuno mi guida su ciò che è il metodo corretto di sovrascrivere file core WooCommerce Javascript, specificamente frontend file. Non ho trovato alcuna documentazione su questo e guardando il codice, il percorso per i file di script di frontend è codificato nel plugin quindi dubito che posizionando una cartella di risorse nel mio tema farà qualsiasi cosa.Override WooCommerce Frontend Javascript

Qual è il modo più pulito per questo in modo che possa caricare un file che si trova nel mio tema dir?

Grazie

+0

Vuoi disabilitare completamente il loro scripting o di esclusione un particolare comportamento o evento? –

+0

Beh, stavo per sovrascrivere completamente il file javascript (add-to-cart-variation.js) perché ci sono alcune modifiche che devo apportare. – Sebastien

+1

In quel file, sembra che ci siano solo due eventi da rileggere su doc ​​ready. Potresti semplicemente separarli nel tuo script. linea 4, e la linea 216-https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.js. Non ho lavorato con quel plugin, ma presumo che tu possa modificare manualmente anche quel file. –

risposta

27

ho avuto lo stesso problema se non con add-to-cart.js. La soluzione semplice è DEQUEUE lo script woocommerce e ENQUEUE la tua sostituzione. Nel mio caso ho aggiunto il seguente al mio functions.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); 

si vuole annullare l'accodamento lo script 'wc-add-to-cart-variante'. Non credo che si avere al Enqueue con lo stesso nome, ma non riuscivo a vedere un motivo per non.

Spero che questo aiuti.

se si sta utilizzando WordPress versione 4.0.1 e WooCommerce versione 2.2.10. È possibile utilizzare i seguenti script:

 

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'); 
 
+4

è '' meglio '' accodare con lo stesso nome, in modo da non rompere alcuna dipendenza poter avere. – Leonel

+2

Se si tenta di accodare con lo stesso handle, il file originale viene comunque messo in coda a meno che non si cancelli l'handle originale con 'wp_dequeue_script()' prima di riaccodarlo. – cfx

+0

Potresti controllare la mia domanda anche http://wordpress.stackexchange.com/questions/215238/how-to-add-quick-edit-in-woocommerce-order-section –

1

Aggiungi questa sezione per la vostra function.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'); 
19

WooCommerce script carichi di frontend e gli stili in class-wc-frontend-scripts.php di file, e si possono trovare come vengono registrati gli script, accodato, localizzato e dipendenze.

Il posto preferito per accodare gli script in Wordpress è il hook di azione wp_enqueue_scripts, perché quello è il momento dopo che Wordpress è stato caricato completamente ma prima che venga prodotto qualsiasi output. E mi piace anche accodare tutti i miei script e stili correlati in una sezione di codice.

Quando si desidera rimuovere completamente alcuni script, è sufficiente chiamare wp_deregister_script() o wp_dequeue_script(). Ma a volte, se vuoi apportare alcune modifiche e lasciare le dipendenze, le variabili e la localizzazione esistenti, c'è un problema perché i plugin vengono caricati prima dei temi. Quindi le funzioni di accodamento non funzioneranno come ci si aspetterebbe. Semplice wp_dequeue_script() => wp_enqueue_script() sarà not work, wp_deregister_script() => wp_register_script() funzionerà, ma i dati localizzati verranno persi.


Questo può essere risolto lavorando direttamente con $wp_scripts oggetto globale che contiene e gestisce tutti gli script caricati tramite wp_enqueue_script() o registrati 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'; 
    } 
+0

L'ultimo funziona per me, pacchetto di ringraziamenti –

+0

Mi è piaciuta l'opzione '$ wp_scripts' perché in questo modo non disturba/mi devo preoccupare delle dipendenze dello script o della versione ecc. +1 –

+0

Questa è una risposta davvero fantastica! Non avevo idea che tu potessi lavorare o che esistesse anche un oggetto '$ wp_scripts' che potresti modificare. Questo è fantastico! Voglio comprarti una birra! – Radmation