在 WooCommerce 结账页面上,我想将输入优惠券的字段移动到订单摘要下方、付款选项上方。但是我不确定如何更改 PHP,因为结账页面由多个 PHP 文件组成,所以我来找你们这些天才人物帮忙。有人知道我如何实现这一点吗?谢谢您的帮助!附注:我已添加图片;第一张是页面上半部分,第二张是页面下半部分。
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'woocommerce_after_checkout_form', 'woocommerce_checkout_coupon_form' );
这将基本上移除优惠券(它钩在结帐表单之前),并在结帐表单之后重新添加它。
或者,您可以使用Javascript来“剪切和粘贴”包含优惠券字段的HTML块,但这是一种混乱的编码方式,我不建议采用这种方法。
@noufalcep,您的回答不够清晰。
最终,在经历了一切之后,我找到了一个可行的解决方案。我正在使用woocommerce 3.2.5和wordpress版本4.8.3。
正如@noufalcep所说,嵌套表单并不是问题所在。当我们执行以下操作时:
add_action(‘woocommerce_checkout_after_order_review’,‘woocommerce_checkout_coupon_form’);
优惠券容器不会与表单元素一起包裹。但是按钮有提交作为输入类型。这就是为什么当我们应用优惠券时,主表单会被提交的原因。
因此,我使用jquery insertAfter插入了优惠券表单。下面是代码。它完美地工作。
var coupon = $(".checkout_coupon");
coupon.insertAfter('.shop_table.woocommerce-checkout-review-order-table');
然后这将在审核订单表之后添加表单。如果您希望使用“有优惠券吗?单击此处输入代码”文本,则必须将元素与表单包装起来。
工作示例可以在此处查看, https://themovementfix.com/checkout/
(function($) {
$(document).ready(function() {
var coupon2 = $(".checkout_coupon.woocommerce-form-coupon");
coupon2.insertAfter('.shop_table.woocommerce-checkout-review-order-table');
})
})
(jQuery);
添加以下CSS:
/*unhide copuon code checkout*/
.checkout_coupon {
display: block !important;
}
/*hide message have a coupon?*/
.woocommerce-info {
display:none;
}
/*coupon code checkout style*/
.checkout_coupon button.button{
background-color: #insert button color here;
}
这是我把优惠券表单放在账单总额之后的方法。这样,在自定义时更有帮助。 只需在您的functions.php中加入此代码,就可以在前端看到定制效果。
/*
* Removing default "Coupon form" from the top of the checkout page
*/
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
/*
* Hooking "Coupon form" after order total in checkout page with custom function
*/
add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_checkout_coupon_form_custom' );
/*
* Rendering html for "Coupon form" with custom function
*/
function woocommerce_checkout_coupon_form_custom() {
echo '<tr class="coupon-form"><td colspan="2">';
wc_get_template(
'checkout/form-coupon.php',
array(
'checkout' => WC()->checkout(),
)
);
echo '</td></tr>';
}
add_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form');
选项2:
add_action('woocommerce_after_checkout_form', 'woocommerce_checkout_coupon_form');
在结账页面中移动WooCommerce优惠券字段
使用方法:您可以使用任何插件(如代码片段)或function.PHP来使用代码。
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'woocommerce_review_order_after_cart_contents', 'woocommerce_checkout_coupon_form_custom' );
function woocommerce_checkout_coupon_form_custom() {
echo '<tr class="coupon-form"><td colspan="2">';
wc_get_template(
'checkout/form-coupon.php',
array(
'checkout' => WC()->checkout(),
)
);
echo '</tr></td>';
}
对建议答案进行了轻微修改:
remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);
add_action('woocommerce_review_order_before_payment', 'woocommerce_checkout_coupon_form');
这将把优惠券输入框放置在订单下方、支付选项上方。