如果您遵循checkout.js源代码的逻辑,您会注意到通过更改结帐表单's class name. Yes, I know, it'可以安全地禁用与编辑计费地址相关的这些AJAX操作 . 因此,而不是 form.checkout 使其成为 form.checkout1 ,其中 .checkout1 只是一个虚构的类名(它不必是真实的/存在的) .
以下示例代码可帮助您了解所需内容:
var default_class = 'checkout';
var mask_class = 'checkout1';
// hijack the form's AJAX by changing form's default class name
$('form.'+default_class).addClass(mask_class).removeClass(default_class);
// restore the original class name whenever you want it
$('form.'+mask_class).addClass(default_class).removeClass(mask_class);
5 回答
一种不禁用checkout.js的方法 .
首先,有可能加载checkout.min.js而不是checkout.js .
然后评论2行:
然后你的结帐页面将是ajax免费!
所有WooCommerce字符串都使用
wp_localize_script
正确本地化,因此我认为您可以通过创建相应的.po / .mo文件来正确翻译它们,但我承认没有很多翻译经验 . 供参考:所有可用的语言包都是at Github,您可能还想阅读documentation .无论如何,结账脚本都在
checkout.js
. 像任何脚本一样,只要您知道句柄,就可以通过wp_dequeue_script()将其出列 .我有一个类似的问题,而不是删除整个脚本,我去看看事件何时创建,我发现了这一点 .
读了一下之后,我发现由于命名空间我无法取消绑定,所以我联系了
on
事件,因为我无法阻止默认,我停止了事件的传播 .这些解决了我的问题 .
如果您遵循checkout.js源代码的逻辑,您会注意到通过更改结帐表单's class name. Yes, I know, it'可以安全地禁用与编辑计费地址相关的这些AJAX操作 . 因此,而不是
form.checkout
使其成为form.checkout1
,其中.checkout1
只是一个虚构的类名(它不必是真实的/存在的) .以下示例代码可帮助您了解所需内容:
请注意,这是一个没有记录的黑客 . 但是,他们可以随时更改结帐表单功能,因此请记住这一点 . 我可以确认它适用于WC 2.6.14,也可能在早期版本中 .
我们遇到了类似的问题:在quote list checkout加载了结帐脚本 . 通过另一个插件再次加载的脚本(WooCommerce Germanized) .
我们的解决方案更明确:
然后: