我有一个Woocommerce网站

一些机器人正在对我的产品进行ATC,我想停止

我在/product-category/*页和/product-tag/*页的添加到购物车按钮后面有链接,我删除了它们,改为发布,所以点击添加到购物车使发布请求改为/?wc-ajax=add_to_cart

但不知何故,机器人正在像这样的页面上执行GET请求

/product-tag/my-product/page/237?add-to-cart=30323
/product-category/games/page/5/?add-to-cart=282290

我不知道他们从哪里得到链接

我可以看到来自Petalbot和随机机器人的请求

  1. 如何使用GET请求完全停止add-to-cart

  2. 对于一个WoCommerce网站来说,最好的robots.txt个是什么

这是当前的robots.txt

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://website.com/wp-sitemap.xml

我对1的解决方案更感兴趣,因为仅仅是不允许添加到购物车的URL并不能阻止那些糟糕的机器人进行ATC,因为他们根本不遵守robots.txt.

推荐答案

如果您想完全禁用通过GET请求添加到购物车,这应该是可行的:

function prevent_get_request_add_cart_item( $passed, $product_id, $quantity, $variation_id = '', $variations= '' ) {

    if (isset($_GET['add-to-cart'])) {
        // show error if you want
        // wc_add_notice('GET requests for add to cart is not allowed.', 'error');

        return false;
    }

    return $passed;

}
add_filter( 'woocommerce_add_to_cart_validation', 'prevent_get_request_add_cart_item', 10, 5 );

我没有亲自测试它,但它应该可以工作,它防止项目被添加到购物车如果add-to-cart GET参数存在.

我得到了this answer人的帮助

Php相关问答推荐

提交表格后的重定向不起作用

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

Laravel Livewire如何在数组值上使用IF、ELSE条件

如何实现对数据库表中多列的唯一约束?

在Symfony 6.4中将工作流动态添加到服务

当配置的URL为空时禁用Laravel Slack日志(log)记录

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

返回WooCommerce中的所有已启用变体

在PHP中使用curl命令执行SCRAPYD操作.json不返回任何内容

如何使用barryvdh/laravel-Snappy在两个打印页面上将表格分成两部分?

当未 Select 任何变体时,在 WooCommerce 可变产品上显示自定义文本

htaccess 重定向子域错误的 url

PHP 中的curl -F request=@file.xml

从图像URL中获取文件扩展名?

在WooCommerce购物车和 checkout 页面中更改总计文本

如何在WooCommerce管理产品列表中显示运输类别列

Laravel 8:会话不适用

从 laravel 中的日期类型中删除时间

Laravel 10 单元测试看不到来自 Artisan Command 的数据库更改

无法在 Laravel 10 中安装 jenssegers/mongodb