iBa*_*her 3 wordpress woocommerce hook-woocommerce
我需要防止每天通过 woocommerce 中的 IP 地址销售超过 30 件商品。基本上,它是针对机器人的保护。我认为逻辑必须是这样的:
*用户注册已禁用
所以我不确定从哪里开始以及如何遵循 woocommerce hooks 规则。
任何代码示例将不胜感激
WooCommerce 实际上默认将客户端 IP 地址存储在订单元数据中。您可以使用 a 上的get_customer_ip_address()方法WC_Order来访问此元数据。同样,WooCommerce 包括WC_Geolocation::get_ip_address()获取当前连接客户端的 IP。
将这些放在一起,woocommerce_checkout_process如果具有相同 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);
Run Code Online (Sandbox Code Playgroud)
请注意,wc_add_notice()类型为的 调用'error'将阻止事务通过。