如何调整WooCommerce购物车页面优惠券错误提示的显示位置
修改WooCommerce购物车页面优惠券错误提示位置
WooCommerce提供了钩子和过滤函数来调整优惠券错误提示的显示位置,以下是两种常用实现方式:
方式一:整体移动所有购物车通知(含优惠券错误)
如果不需要区分优惠券错误和其他通知,直接将所有购物车通知从默认位置移到目标位置:
- 移除默认的通知输出钩子:
// 移除购物车顶部的默认通知输出 remove_action( 'woocommerce_before_cart', 'wc_print_notices', 10 );
- 在你需要的位置添加通知输出,比如购物车表格之后、优惠券输入框下方等,替换成对应的WooCommerce钩子即可:
// 在购物车优惠券输入框下方输出通知 add_action( 'woocommerce_after_coupon_form', 'wc_print_notices', 10 );
常用的可选钩子参考:
woocommerce_before_cart_table:购物车表格上方woocommerce_after_cart_table:购物车表格下方woocommerce_before_cart_totals:购物车总计区域上方woocommerce_after_cart_totals:购物车总计区域下方
方式二:单独移动优惠券错误提示
如果只想移动优惠券相关错误,保留其他通知在原位置,可以通过捕获并重新输出的方式实现:
// 捕获优惠券错误通知,阻止默认输出 function capture_coupon_errors( $message, $notice_type ) { static $coupon_errors = []; // 判断是否为优惠券相关错误(可根据实际提示文本调整判断逻辑) if ( $notice_type === 'error' && str_contains( $message, '优惠券' ) ) { $coupon_errors[] = $message; return ''; } return $message; } add_filter( 'woocommerce_add_notice', 'capture_coupon_errors', 10, 2 ); // 在指定位置输出捕获的优惠券错误 function display_coupon_errors_in_custom_location() { global $coupon_errors; if ( ! empty( $coupon_errors ) ) { foreach ( $coupon_errors as $error ) { wc_print_notice( $error, 'error' ); } } } // 替换为你需要的目标钩子,比如优惠券输入框下方 add_action( 'woocommerce_after_coupon_form', 'display_coupon_errors_in_custom_location', 10 );
注意事项
- 上述代码可添加到当前主题的
functions.php文件,或自定义插件中; - 若提示文本不是中文“优惠券”,需调整
str_contains中的关键词匹配实际提示内容; - 可根据截图中的目标位置,选择对应的WooCommerce钩子进行替换。
内容的提问来源于stack exchange,提问作者John Bright
相关产品推荐
相关产品推荐

