php - 通过 url 发送多个项目时清除 Woocommerce 购物车
问题描述
我需要清理 Woocommerce 购物车,以防我通过 url 向它发送超过四个项目。
我想出了这段代码,但它只会在购物车里已经有五件商品的情况下清理购物车。
//in functions.php
add_filter( 'woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 20, 3 );
function remove_cart_item_before_add_to_cart( $passed, $product_id, $quantity ) {
if( WC()->cart->get_cart_contents_count() >= 5 )
WC()->cart->empty_cart();
return $passed;
}
另一个问题是,即使上面对我没有用的代码,如果我通过 url 添加多个课程也不起作用,如下所示:
https://exemple.net/cart?fill_cart=100,101,102,103,104,105,106
也就是说,其中的代码functions.php
仅适用于网站,而不适用于 url。
我只需要在通过 url发送超过 4 件商品时清除购物车。
我更喜欢 PHP 中的解决方案,但 JS 解决方案可以。谢谢谁能帮助我。
解决方案
我使用WooCommerce的免费插件 Cart 链接找到了一个解决方案,并对其代码进行了一些更改。
我将在下面描述我所做的:
1)要开始安装插件,这将允许您使用fill_cart
url 中的参数添加产品(如我的问题中所述)
2)编辑在以下位置找到的插件文件soft79-cart-links-for-woocommerce.php
:yoursite/wp-content/plugins/soft79-cart-links-for-woocommerce/
3)转到第141行或找到方法的声明fill_cart
在fill_cart
方法内取消注释(或添加)清理购物车的代码:
public function fill_cart( $fill_string ) {
$original_notices = wc_get_notices();
wc_clear_notices();
////Clear the cart
//WC()->cart->empty_cart(); <-- uncomment here!
保存文件。现在任何通过 url 到达的新商品都必须先清理购物车。
推荐阅读
- java - 如何修复 Android Studio 中的颜色缓冲区错误?
- java - Cassandra - 写入错误。如何解决?
- python - 读取两个关键字 Python 之间的行
- c++ - std::atomic 是如何实现的
- localization - 微服务国际化和本地化的最佳实践
- azure - 在 HTTP POST 中的 Azure 逻辑应用程序中出现错误:-“BadRequest。Http 请求失败:内容不是有效的 JSON。”
- php - LOAD DATA LOCAL INFILE 通过终端工作,但不是 cron 作业
- python - 在python中,如何解析多层JSON?
- python - 蟒蛇 | MySQL | AttributeError:模块'mysql.connector'没有属性'connect'
- .net - VB NET 将值与列表中的值进行比较