如何使用 Hook 拦截 WooCommerce 优惠券申请速率限制尝试请求?

问题描述 投票:0回答:1

我正在一个 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

如果超出速率限制,则停止提交。

我应该为此目的使用特定的钩子或过滤器吗? 我感谢任何可以帮助我实现这一目标的指导或代码示例。谢谢!

php wordpress woocommerce hook-woocommerce coupon
1个回答
0
投票

您可以尝试使用

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
过滤器挂钩。

© www.soinside.com 2019 - 2024. All rights reserved.