我正在一个 WooCommerce 网站上工作,我在该网站上实施了应用优惠券代码的速率限制。我创建了一个单独的数据库表,通过函数 has_exceeded_coupon_attempts($email) 来跟踪用户 IP 和优惠券使用情况,该函数检查用户是否超出了允许的优惠券尝试次数。工作正常,经过测试
add_action('woocommerce_applied_coupon', 'track_coupon_attempts_jg8766576yGdf', 10, 1);
目前,我需要一种方法/钩子在发送折扣请求之前在我的functions.php文件中执行此跟踪功能,理想情况下可以防止请求url看起来像这样的ajax表单提交
...com/?wc-ajax=apply_coupon
如果超出速率限制,则停止提交。
我应该为此目的使用特定的钩子或过滤器吗? 我感谢任何可以帮助我实现这一目标的指导或代码示例。谢谢!
您可以尝试使用
woocommerce_coupon_is_valid
过滤器挂钩,添加自定义有效性步骤:
add_filter('woocommerce_coupon_is_valid', 'track_coupon_validity', 10, 3);
function track_coupon_validity( $is_valid, $coupon, $discounts ) {
$email = WC()->customer->get_billing_email(); // get billing email
// add your logic setting $is_valid argument as true or false
return $is_valid;
}
它可以工作,因为此过滤器挂钩将阻止应用优惠券,并显示一般错误消息。
要自定义通用错误消息,您可以使用
woocommerce_coupon_error
过滤器挂钩。