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

时间:2015-06-03 17:30:54

标签: 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' );

它解决了我的问题,但是此代码在结帐页面禁用了所有AJAX,我想禁用ajax仅用于申请/删除优惠券,并保存另一个ajax处理,如验证结算/发货字段。

请帮忙,不幸的是我不是JS专家。 此致!

2 个答案:

答案 0 :(得分:0)

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

相关行是woocommerce/assets/js/frontend/checkout.js的381 - 383(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 );

您需要删除2和3。

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

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

答案 1 :(得分:0)

对于正在寻找禁用 AJAX 并强制刷新结帐页面的解决方案并遇到这篇文章的任何其他人,这是我发现对我有用的方法,而无需编辑 WooCommerce 插件中的任何核心功能文件。请注意,它实际上并没有禁用 AJAX,而是在删除后成功刷新了完整的结帐页面。

jQuery 代码:这会在单击删除按钮 400 毫秒后强制页面刷新,以确保 AJAX 删除命令首先通过。

jQuery(document).on('click', '.woocommerce-remove-coupon', function () {
    setTimeout(
        function () {
            window.location.href = window.location.href;
        }, 400);
});

然后将 .js 文件挂钩到结帐页面(添加到主题的 functions.php 或创建插件)。

我是这样做的:

add_action( 'woocommerce_after_checkout_form', 'remove_coupon');
function remove_coupon() {
    wp_enqueue_script('remove-coupon', plugins_url('remove-coupon.js', __FILE__));
}