Woocommerce:如何在申请/删除优惠券时禁用AJAX?

ryd*_*der 5 ajax wordpress woocommerce

在我的woocommerce商店中,我将购物车页面和结帐页面合并为一个页面,效果很好,但是当我尝试删除优惠券时出现问题。优惠券通过AJAX处理从购物车中移除,因此移除完成后-页面不会重新加载,并且优惠券仍显示为已应用(但实际上已被移除)。所以我需要禁用AJAX才能应用/删除优惠券功能。

我试图将此代码添加到主题的functions.php中:

function disable_checkout_script(){
wp_dequeue_script( 'wc-checkout' );
}
add_action( 'wp_enqueue_scripts', 'disable_checkout_script' );
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题,但是此代码在结帐页面上禁用了所有AJAX,并且我只想针对申请/删除优惠券禁用ajax,并保存其他ajax处理,例如对计费/运输字段进行验证。

请帮助,不幸的是我不是JS专家。问候!

Nat*_*son 0

在 JS 文件中,您需要删除几个事件处理程序。当按下删除优惠券按钮以及提交优惠券表单时,会触发一个事件。

相关行是第 381 - 383 行woocommerce/assets/js/frontend/checkout.js(WooCommerce 加载此文件的缩小版本)。

$( document.body ).on( 'click', 'a.showcoupon', this.show_coupon_form );
$( document.body ).on( 'click', '.woocommerce-remove-coupon', this.remove_coupon );
$( 'form.checkout_coupon' ).hide().submit( this.submit );
Run Code Online (Sandbox Code Playgroud)

您需要删除 2 和 3。

将以下代码添加到您的 JS 文件中:

$( document.body ).off( 'click', '.woocommerce-remove-coupon', wc_checkout_coupons.remove_coupon );
$( 'form.checkout_coupon' ).off( 'submit' );
Run Code Online (Sandbox Code Playgroud)