有人可以指導我什麼是重寫WooCommerce核心JavaScript文件,特別是前端文件的正確方法。我還沒有找到任何關於此的文檔並查看代碼,前端腳本文件的路徑在插件中是硬編碼的,所以我懷疑在我的主題中放置資源文件夾會執行任何操作。覆蓋WooCommerce前端Javascript
什麼是最乾淨的方式,以便我可以加載位於我的主題目錄中的文件?
謝謝
有人可以指導我什麼是重寫WooCommerce核心JavaScript文件,特別是前端文件的正確方法。我還沒有找到任何關於此的文檔並查看代碼,前端腳本文件的路徑在插件中是硬編碼的,所以我懷疑在我的主題中放置資源文件夾會執行任何操作。覆蓋WooCommerce前端Javascript
什麼是最乾淨的方式,以便我可以加載位於我的主題目錄中的文件?
謝謝
我有同樣的問題,除了add-to-cart.js。簡單的解決方案是DEQUUE的woocommerce腳本和ENQUEUE你的替代品。在我來說,我增加了以下我的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);
你會想離隊的「WC-添加到購物車-變化」腳本。我不認爲你有 ENQUEUE具有相同的名稱,但我看不出一個理由不。
希望這會有所幫助。
如果您使用WordPress版本4.0.1和WooCommerce版本2.2.10。您可以使用以下腳本:
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');
添加本節進行到您的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');
WooCommerce負載前端腳本和樣式在class-wc-frontend-scripts.php
文件,並有可以發現腳本是如何註冊,排隊,本地化和依賴關係。
在Wordpress中排隊腳本的首選位置是wp_enqueue_scripts
動作鉤子,因爲那是在Wordpress完全加載之後但在執行任何輸出之前的時刻。而且我喜歡將所有相關的腳本和樣式排入代碼的一個部分。
當您想要完全刪除一些腳本時,調用wp_deregister_script()
或wp_dequeue_script()
就足夠了。但有時候,如果想進行一些更改並保留現有的依賴關係,變量和本地化,則會出現問題,因爲插件會在主題之前加載。所以入隊函數不會像你期望的那樣工作。簡單wp_dequeue_script() => wp_enqueue_script()
將not work,wp_deregister_script() => 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';
}
最後一個適合我,捆綁謝謝 – 2017-09-17 07:45:58
我喜歡'$ wp_scripts'選項,因爲這樣我不會打擾/需要打擾腳本依賴或版本等。+1 – 2017-10-04 05:49:32
這真是一個非常了不起的答案!我不知道你可以使用或者甚至有一個你可以修改的'$ wp_scripts'對象。這真太了不起了!我想給你買一瓶啤酒! – Radmation 2018-03-09 22:11:06
你想完全禁用它們的腳本,或覆蓋:
這可以通過直接與包含和管理通過
wp_enqueue_script()
加載的所有腳本或登記wp_register_script()
$wp_scripts
全局對象工作來解決一個特定的行爲或事件? – 2012-08-07 20:15:12嗯,我打算徹底改寫javascript文件(add-to-cart-variation.js),因爲我需要做很多更改。 – Sebastien 2012-08-07 20:36:48
在該文件中,它看起來好像只有兩個事件被綁定到文檔就緒。你可以在你自己的腳本中解除它們。第4行和第216行https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.js。我沒有使用該插件,但我認爲你也可以手動修改該文件。 – 2012-08-07 20:53:21