在结账时更改 Woocommerce 优惠券代码的位置会使购买按钮停止工作?

Changing the location of Woocommerce coupon code on checkout makes purchase button stop working?

好的,所以我到处寻找解决方案,但我不明白为什么会这样。从逻辑上讲这是没有意义的。我不是真正的编码员,但我知道一些基本的 PHP.

我使用以下代码将 Woo 结帐中的优惠券字段简单地移动到不同的位置:

/*** MOVE THE COUPON CODE ***/

remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'woocommerce_after_order_notes', 'woocommerce_checkout_coupon_form' );

添加此代码后,用于完成订单的"Buy Now" 结帐按钮在点击时没有任何作用,就像 JS 被禁用一样。

当代码被删除并且优惠券代码回到原来的位置时,按钮正常工作。

有没有其他人遇到过这种情况?太奇怪了。

您可以在此处查看页面(已实现上述代码):

http://insiders.nomadmoguls.com/payment/?add-to-cart=205479&variation_id=205481&attribute_pa_type-of-pass=yearly

在此先感谢大家的帮助!这是我自己寻找解决方案几个小时后的最后一招!

问题是由您使用的挂钩引起的,woocommerce_after_order_notes。它导致 <form name="checkout"> 在提交按钮 之前关闭 ,因此立即注册按钮实际上不再位于该表单内,因此在单击时无法提交,因为您的(转述的)标记是这样的:

<form name="checkout">
    <!-- coupon code stuff -->
</form>
<button type="submit">Sign Up Now</button>

打开 Dev Tools,在网站上查看我的 video。您可以在“结帐”表单外看到“立即注册”按钮 - 只要我将其向上拖动到表单内,它就可以正常工作。

一个相对常见的误解是 "Coupon Code" 是一个结帐表单字段,实际上它是自己单独的 表单 ,所以当然 - 它不想直接嵌套在结帐表单中(表单中不能有表单)。

这意味着你有两个真正的选择,而不需要做一些疯狂的事情,比如在提交按钮上重新绑定点击处理程序来提交表单:

  1. 使用结帐表单后的挂钩,例如 woocommerce_after_checkout_form 而不是 woocommerce_after_order_notes
  2. 将优惠券表格保存在原来的位置。