php - 在结帐时更改所有与 WooCommerce 消息相关的优惠券代码的位置
问题描述
我想更改结帐页面中所有与 WooCommerce 消息相关的优惠券代码的位置。
我已成功将优惠券代码表单从其原始位置(结帐页面顶部)移动到订单详细信息表(woocommerce_review_order_before_payment
挂钩)之后。
但是现在优惠券代码消息放置没有意义,特别是对于移动用户,因此我想将所有与优惠券代码相关的消息移动到优惠券表格下方(在woocommerce_review_order_before_payment
钩子上)。
但是,重要的是只有与优惠券代码相关的消息才会被移动,而不是所有的消息。
这是与优惠券代码相关的所有 WooCommerce 消息的列表:
信息 | 消息类型 | 什么时候 |
---|---|---|
优惠码已申请! | woocommerce-error |
当您尝试应用已应用于您的订单的优惠券代码时。 |
优惠券“优惠券代码”不存在! | woocommerce-error |
当您尝试应用不存在的优惠券代码时。 |
请输入优惠券代码。 | woocommerce-error |
当您尝试应用一个空的优惠券字段时。 |
优惠券已被删除。 | woocommerce-message |
当您从订单中成功删除优惠券代码时。 |
优惠券代码申请成功。 | woocommerce-message |
当您成功将优惠券代码应用于您的订单时。 |
有人可以帮忙吗?
解决方案
首先,正如@Pavel Vnukov 所说nested forms are not supported and are not part of the w3c standard.
,您已经添加了preventDefault
so default action should not be taken
。
我已经修复了对 @Pavel Vnukov 代码的一些代码更改,以根据您的需要工作。
试试下面的代码。
(function($){
$('.woocommerce-form-coupon-toggle').remove();
$(document).on("click", 'button[name="apply_coupon"]', function(event) {
event.preventDefault();
$form = $('form[name="checkout"]');
$form.block({message:''});
var data = {
security: wc_checkout_params.apply_coupon_nonce,
coupon_code: $( 'input[name="coupon_code"]' ).val()
};
$.ajax({
type: 'POST',
url: wc_checkout_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'apply_coupon' ),
data: data,
success: function( code ) {
$( '.woocommerce-error, .woocommerce-message' ).remove();
$form.removeClass( 'processing' ).unblock();
if ( code ) {
$( 'button[name="apply_coupon"]' ).parent().after( code );
$( document.body ).trigger( 'update_checkout', { update_shipping_method: false } );
}
},
dataType: 'html'
});
});
})(jQuery);
经过测试和工作
推荐阅读
- geolocation - System.Device.Location.GeoCoordinateWatcher 类如何在 windows 中获取纬度和经度
- c - “无效”问题:模拟病毒的程序
- javascript - 如何为按钮添加的图像添加填充
- python-3.x - Beautifulsoup 的 find_all 的 OR 函数?
- sql - 如何使用 2 sql 查询计算可用性百分比并将其组合到结果中
- javascript - 将 Tailwind 2 与 Angular 11 一起使用的确切解决方案是什么?我只是厌倦了寻找合适的解决方案。没有什么真正有效
- javascript - 溢出不会滚动整个内容
- python - 如何创建每次继承类时都会递增的属性。Python
- ios - 返回 Pythonista IOS Iphone 中当前前台应用程序的名称
- mysql - MySQL 从不释放内存