WooCommerce购物车优惠券字段移除/隐藏问题(保留自动折扣显示)
解决方案:隐藏购物车优惠券字段但保留自动折扣功能
我懂你现在的痛点——网上很多方法直接禁用优惠券功能,结果连自动应用的折扣都看不到,用户肯定懵。给你几个精准的方案,既能藏起输入字段,又不影响自动折扣的展示:
方法1:CSS视觉隐藏(最简单快捷)
这个方法只在视觉上隐藏优惠券输入区域,完全不碰功能逻辑,自动折扣该显示还是显示。你只需要把下面的代码加到主题的自定义CSS(WordPress后台「外观」→「自定义」→「额外CSS」)、子主题的style.css里就行:
/* 隐藏购物车页面的优惠券输入表单 */ .woocommerce-cart .woocommerce-coupon-form { display: none !important; }
优点:零风险,不用改PHP代码,刷新页面就生效,自动折扣的展示完全不受影响。
方法2:钩子精准移除(不加载字段HTML)
如果你不想让优惠券字段的HTML代码出现在页面里(更彻底),可以用WooCommerce的钩子移除表单渲染,同时保留优惠券核心功能。把这段代码加到子主题的functions.php里:
// 移除购物车页面的优惠券表单,保留自动优惠券功能 add_action( 'woocommerce_before_cart', 'remove_cart_coupon_form', 1 ); function remove_cart_coupon_form() { // 移除默认的优惠券表单渲染动作 remove_action( 'woocommerce_before_cart', 'woocommerce_cart_coupon', 10 ); }
说明:这个操作只是把购物车页面的优惠券输入框去掉了,自动优惠券的应用逻辑、折扣信息的展示都正常运行,不会给用户造成困惑。
方法3:适配自定义主题的钩子移除
如果你的主题没有用WooCommerce默认的钩子放置优惠券表单,你需要先找到主题用的钩子。比如有些主题会把优惠券表单放在购物车侧边栏,用woocommerce_cart_collaterals钩子,那代码就改成这样:
add_action( 'wp', 'remove_custom_cart_coupon_form' ); function remove_custom_cart_coupon_form() { // 只在购物车页面执行 if ( is_cart() ) { // 替换成你主题实际用的钩子和优先级 remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_coupon', 10 ); } }
怎么找钩子?可以查看主题的cart.php模板文件,找到优惠券表单对应的do_action调用就行。
注意事项
- 优先用子主题修改
functions.php,避免主题更新后代码丢失; - 改代码前最好备份一下站点,或者在测试环境先试;
- 测试的时候记得加个自动优惠券,看看购物车的折扣信息是否正常显示。
内容的提问来源于stack exchange,提问作者Questioners12
相关产品推荐
相关产品推荐

