wordpress 木材贸易:如何禁用 AJAX 应用/删除优惠券?

siv3szwd  于 2022-12-11  发布在  WordPress
关注(0)|答案(2)|浏览(176)

在我的基于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处理,如账单/发货字段的验证。
请帮忙,不幸的是,我不是一个JSMaven。

cl25kdpy

cl25kdpy1#

在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' );
smdncfj3

smdncfj32#

对于任何其他人寻找一个解决方案,以禁用 AJAX 和强制刷新结帐页面,并遇到了这篇文章,这里是我发现为我工作,而不必编辑WooCommerce插件中的任何核心功能文件。注意,然而,它实际上并没有禁用AJAX,但它成功地刷新了整个结帐页面后删除。
jQuery代码:这会在单击remove按钮400ms后强制页面刷新,以确保 AJAX 删除命令首先执行。

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

然后将.js文件链接到checkout页面(添加到主题的functions.php或创建一个插件)。
我是这样做的:

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

相关问题