有人可以指导我什么是覆盖 WooCommerce 核心 Javascript 文件,特别是前端文件的正确方法。我还没有找到任何关于此的文档并查看代码,前端脚本文件的路径在插件中是硬编码的,所以我怀疑在我的主题中放置一个资产文件夹会做任何事情。
什么是最干净的方法,以便我可以加载位于我的主题目录中的文件?
谢谢
有人可以指导我什么是覆盖 WooCommerce 核心 Javascript 文件,特别是前端文件的正确方法。我还没有找到任何关于此的文档并查看代码,前端脚本文件的路径在插件中是硬编码的,所以我怀疑在我的主题中放置一个资产文件夹会做任何事情。
什么是最干净的方法,以便我可以加载位于我的主题目录中的文件?
谢谢
除了 add-to-cart.js,我遇到了同样的问题。简单的解决方案是将 woocommerce 脚本出队并入队您的替代品。就我而言,我将以下内容添加到我的 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-add-to-cart-variation”脚本出队。我认为您不必以相同的名称入队,但我看不出有理由不这样做。
希望这可以帮助。
如果您使用的是 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');
WooCommerce 在class-wc-frontend-scripts.php
文件中加载前端脚本和样式,可以找到脚本是如何注册、排队、本地化和依赖的。
在 Wordpress 中将脚本排入队列的首选位置是wp_enqueue_scripts
操作挂钩,因为那是在 Wordpress 完全加载之后但在进行任何输出之前的时刻。而且我喜欢将我所有的相关脚本和样式排入一段代码中。
当您想完全删除某些脚本时,调用其中一个wp_deregister_script()
或wp_dequeue_script()
就足够了。但有时如果想要进行一些更改并保留现有的依赖项、变量和本地化,则会出现问题,因为插件是在主题之前加载的。所以入队函数不会像你期望的那样工作。Simplewp_dequeue_script() => wp_enqueue_script()
将不起作用,wp_deregister_script() => wp_register_script
() 将起作用,但本地化数据将丢失。
这可以通过直接使用$wp_scripts
全局对象来解决,该对象包含并管理通过以下方式加载wp_enqueue_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';
}
将此部分添加到您的 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' );