WooCommerce:如果我将优惠券包裹在折叠元素中,则优惠券无法在购物车中使用
WooCommerce: Coupon doens't work in cart if I wrap it in collapse element
我想隐藏购物车中的优惠券字段。
为此,我将其包装在 Bootstrap 折叠元素中,并将 display:none
添加到现有优惠券字段。
编辑:在@gael () 发表评论后,我发现,如果我在模板的其他位置显示该表单,该表单就可以正常工作。但是现在它不再显示任何成功或错误消息了?!
这是我的代码:
<?php
add_action( 'woocommerce_after_cart_table', 'display_coupon_form_below_proceed_checkout', 50 );
function display_coupon_form_below_proceed_checkout() {
?>
<small><a class="text-muted" data-toggle="collapse" href="#collapseCartCoupon" role="button" aria-expanded="false" aria-controls="collapseCartCoupon"><?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?></a></small>
<form class="woocommerce-coupon-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
<div class="collapse" id="collapseCartCoupon">
<?php if ( wc_coupons_enabled() ) { ?>
<div class="coupon under-proceed">
<input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" style="width: 100%" />
<button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>" style="width: 100%"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
</div>
<?php } ?>
</div>
</form>
<style>
.woocommerce table.shop_table .coupon {display: none !important;}
</style>
<?php
}
我会覆盖 WooCommerce 上的购物车页面,以将优惠券包装在折叠元素中。
可以通过将文件从 wp-content/plugins/woocommerce/templates/cart/cart.php
复制到 wp-content/themes/yourtheme/woocommerce/cart/cart.php
来覆盖此模板。
然后从 WooCommerce v4 的第 142 行到第 150 行,您可以像这样插入您的代码段:
<?php if ( wc_coupons_enabled() ) { ?>
<small><a class="text-muted" data-toggle="collapse" href="#collapseCartCoupon" role="button" aria-expanded="false" aria-controls="collapseCartCoupon"><?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?></a></small>
<div class="coupon collapse" id="collapseCartCoupon">
<label for="coupon_code"><?php esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
<?php do_action( 'woocommerce_cart_coupon' ); ?>
</div>
<?php } ?>
因为我的主题已经在使用 Bootstrap,collapse
class 已经隐藏了整个 div 所以我不必添加你的内联样式。
我确实测试过将它移到 table 下的新 <tr>
中,优惠券代码仍然有效。我想它只需要在 <form>...</form>
内就可以使用。
另请注意模板文件顶部来自 WooCommerce 的警告:
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
我想隐藏购物车中的优惠券字段。
为此,我将其包装在 Bootstrap 折叠元素中,并将 display:none
添加到现有优惠券字段。
编辑:在@gael (
这是我的代码:
<?php
add_action( 'woocommerce_after_cart_table', 'display_coupon_form_below_proceed_checkout', 50 );
function display_coupon_form_below_proceed_checkout() {
?>
<small><a class="text-muted" data-toggle="collapse" href="#collapseCartCoupon" role="button" aria-expanded="false" aria-controls="collapseCartCoupon"><?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?></a></small>
<form class="woocommerce-coupon-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
<div class="collapse" id="collapseCartCoupon">
<?php if ( wc_coupons_enabled() ) { ?>
<div class="coupon under-proceed">
<input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" style="width: 100%" />
<button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>" style="width: 100%"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
</div>
<?php } ?>
</div>
</form>
<style>
.woocommerce table.shop_table .coupon {display: none !important;}
</style>
<?php
}
我会覆盖 WooCommerce 上的购物车页面,以将优惠券包装在折叠元素中。
可以通过将文件从 wp-content/plugins/woocommerce/templates/cart/cart.php
复制到 wp-content/themes/yourtheme/woocommerce/cart/cart.php
来覆盖此模板。
然后从 WooCommerce v4 的第 142 行到第 150 行,您可以像这样插入您的代码段:
<?php if ( wc_coupons_enabled() ) { ?>
<small><a class="text-muted" data-toggle="collapse" href="#collapseCartCoupon" role="button" aria-expanded="false" aria-controls="collapseCartCoupon"><?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?></a></small>
<div class="coupon collapse" id="collapseCartCoupon">
<label for="coupon_code"><?php esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
<?php do_action( 'woocommerce_cart_coupon' ); ?>
</div>
<?php } ?>
因为我的主题已经在使用 Bootstrap,collapse
class 已经隐藏了整个 div 所以我不必添加你的内联样式。
我确实测试过将它移到 table 下的新 <tr>
中,优惠券代码仍然有效。我想它只需要在 <form>...</form>
内就可以使用。
另请注意模板文件顶部来自 WooCommerce 的警告:
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.