我已经尝试过你的代码,它在我最后工作得很好,但我认为问题是你忘记关闭
<center>
标签。
关闭它,这可能会解决你的问题。
为了比我的评论更清楚,您需要从后端处理自定义表发生的情况。
给你的桌子一个ID
<table ID="MyCustomTableId">
<center><h4>MAKE PAYMENT</h4></center>
<center><p>Please select the following payment method</p></center>
</table>
从后端查看 asset/js/frontend/checkout.js 中的触发器:
在 AJAX 回调中,处理您的表格(只需将表格的 HTML 替换为您的请求之一;此时它将停止重复)。这是一个例子:
init_checkout: function() {
$( '#billing_country, #shipping_country, .country_to_state', '#MyCustomTableId' ).change();
$( document.body ).trigger( 'update_checkout' );
},
强调列表中添加的“#MyCustomTableId”!对所有触发器执行此操作,它应该可以解决您的问题。每次更新 woocommerce 也会失败,所以想一下! (这不是世界末日,你会擅长的,但是你知道......可持续性是一个因素,谁知道我们中的一个人什么时候被公共汽车撞到......)
我遇到了这个确切的问题,在按照操作挂钩后我找到了原因。在文件 wc-template-hooks.php 的第 223 和 224 行(在撰写本文时),您可以看到:
add_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
add_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
这就是事情重复的原因。 woocommerce_checkout_order_review 操作连续连接到两个单独的函数,我假设这些函数有一些代码来补偿用于防止重复的表标签,当使用 woocommerce_checkout_order_review 时,其他任何内容都会被重复。
因此,为了解决这个问题,我所做的就是为 Woocommerce 已纳入 woocommerce_checkout_order_review 的两个函数创建自己的操作挂钩,并将它们添加为代码片段或添加到函数文件中,如下所示:
/*** Create hook for the Woocommerce order summary table ***/
add_action( 'woocommerce_checkout_order_summary', 'woocommerce_order_review', 10 );
/*** Create hook for the Woocommerce order payment form ***/
add_action( 'woocommerce_checkout_order_payment', 'woocommerce_checkout_payment', 20 );
使用这些,我可以完美地调用各个部分,并将它们包装在我自己的 HTML 中,以提供我想要的任何布局。
我知道对于原来的问题来说已经太晚了,但我希望这对某人有帮助。