Поскольку ловушка woocommerce_review_order_after_cart_contents
находится внутри html таблицы между тегами </tr>
и </tbody>
, поэтому она должна отображаться внутри определенной структуры c html , чтобы избежать вашей проблемы.
Это сделает следующее:
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>';
}
Код входит в функции. php файл активной дочерней темы (или активной темы). проверено и работает.
Если вы хотите отображать форму купона напрямую, вы можете добавить в стиле: css файл вашей активной дочерней темы (или активной темы):
.woocommerce-checkout .checkout_coupon.woocommerce-form-coupon {
display: block !important;
}
Связанный: Переместить поле купона после оплаты заказа в Woocommerce?