在结帐时禁用WooCommerce的AJAX

时间:2014-11-19 17:42:41

标签: php ajax wordpress woocommerce

我想问一下如何在结帐页面(您输入运费和结算信息)中禁用AJAX,而不是使用AJAX根据您的位置更新购物车摘要,它会通过自然更新来更新刷新。

目前,只要用户通过送货地点切换其位置,购物车摘要就会自动更新,而无需重新加载页面。我想删除那个AJAX,只是让页面重新加载更新的信息。

我不太确定我应该指出哪种代码或方向,但我已准备好提供所需的任何细节。请告诉我!谢谢!!

5 个答案:

答案 0 :(得分:9)

所有WooCommerce字符串都使用wp_localize_script正确本地化,因此我认为您可以通过创建相应的.po / .mo文件来正确翻译它们,但我承认没有很多翻译经验。供参考:所有可用语言包均为at Github,您可能还需要阅读documentation

无论如何,结帐脚本都在checkout.js。与任何脚本一样,只要您知道句柄,就可以通过wp_dequeue_script()将其出列。

function so_27023433_disable_checkout_script(){
    wp_dequeue_script( 'wc-checkout' );
}
add_action( 'wp_enqueue_scripts', 'so_27023433_disable_checkout_script' );

答案 1 :(得分:1)

我有一个类似的问题,而不是删除整个脚本,我去看看事件的创建时间,我发现了这个。

$( document.body ).bind( 'update_checkout', this.update_checkout );

在阅读了一下后,我发现由于名称空间,我无法解除绑定,所以我联系了on事件,因为我无法阻止默认情况下我停止传播事件。

这些解决了我的问题。

jQuery(document.body).on('update_checkout', function(e){
    //e.preventDefault();
    //e.stopPropagation();
    e.stopImmediatePropagation();
    //console.log(e);
});

答案 2 :(得分:0)

如果您遵循checkout.js源代码的逻辑,您会注意到,通过更改结帐表单的类名,可以安全地禁用与编辑帐单邮寄地址相关的这些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); 只是一个虚构的类名(它不必是真实的/存在的)。

以下示例代码可帮助您了解所需内容:

{{1}}

请注意,这是一个没有记录的黑客攻击。但是,他们可以随时更改结帐表单功能,因此请记住这一点。我可以确认它适用于WC 2.6.14,也可能适用于早期版本。

答案 3 :(得分:0)

我们有一个类似的问题:在quote list checkout处加载了结帐脚本。再次通过另一个插件(WooCommerce Germanized)加载了脚本。

我们的解决方案是一个更明确的解决方案:

  • 在页面上配置自定义字段,您不希望加载结帐脚本。

比:

add_action('wp_enqueue_scripts', 'myprefix_dequeue_woocommerce_checkout', 10000);

function myprefix_dequeue_woocommerce_checkout() {
  if (get_post_meta(get_the_ID(), 'disable_woocommerce_checkout_scripts')) {
    wp_dequeue_script('wc-checkout');
    wp_dequeue_script('wc-gzd-checkout');
    wp_dequeue_script('wc-gzdp-checkout');
  }
}

答案 4 :(得分:-1)

不禁用checkout.js的一种方法。

首先可能加载checkout.min.js而不是checkout.js。

然后评论2行:

update_checkout:function(){
    //b.reset_update_checkout_timer(),
    //b.updateTimer=setTimeout(b.update_checkout_action,"5")
},

然后您的结帐页面将是ajax免费!