首页 > 解决方案 > 通过 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 解决方案可以。谢谢谁能帮助我。

标签: phpwordpresswoocommercehook-woocommerce

解决方案


我使用WooCommerce的免费插件 Cart 链接找到了一个解决方案,并对其代码进行了一些更改。

我将在下面描述我所做的:

1)要开始安装插件,这将允许您使用fill_carturl 中的参数添加产品(如我的问题中所述)

2)编辑在以下位置找到的插件文件soft79-cart-links-for-woocommerce.phpyoursite/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 到达的新商品都必须先清理购物车。


推荐阅读