gpt4 book ai didi

wordpress - 按 IP 限制 woocommerce 订单

转载 作者:行者123 更新时间:2023-12-01 11:14:46 25 4
gpt4 key购买 nike

我需要防止在 woocommerce 中通过 IP 地址每天销售超过 30 件商品。基本上,它是对机器人的保护。我认为逻辑必须是这样的:

  • 获取购买客户的 IP 并将其存储在订单元中
  • 检查过去 24 小时内是否有来自该 IP 的其他购买
  • 如果超过 30 - 在付款前显示错误并要求稍后返回

*用户注册被禁用

所以我不确定从哪里开始以及如何遵循 woocommerce hooks 规则。

任何代码示例都将受到高度赞赏

最佳答案

默认情况下,WooCommerce 实际上将客户端 IP 地址存储在订单元数据中。您可以使用 WC_Order 上的 get_customer_ip_address() 方法来访问此元数据。同样,WooCommerce 包含 WC_Geolocation::get_ip_address() 以获取当前连接的客户端的 IP。

将这些放在一起,您可以使用 woocommerce_checkout_process Hook ,如果具有相同 IP 的用户在给定时间段内尝试进行过多购买,则会给出错误。

我在这里使用 wc_get_orders()简洁查询最近24小时内所有匹配IP的订单,超过30条则取消交易。

function my_ip_checker() {
$last_24_hours_from_ip_results = wc_get_orders(array(
'date_created' => '>=' . (time() - 86400), // time in seconds
'customer_ip_address' => WC_Geolocation::get_ip_address(),
'paginate' => true // adds a total field to the results
));
if($last_24_hours_from_ip_results->total > 30) {
wc_add_notice('Too many orders in the last 24 hours. Please return later.', 'error');
}
}
add_action('woocommerce_checkout_process', 'my_ip_checker', 10, 0);

请注意,使用 'error' 类型调用 wc_add_notice() 将阻止事务处理。

关于wordpress - 按 IP 限制 woocommerce 订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com