Очистить корзину Woocommerce при отправке нескольких товаров по URL - PullRequest
0 голосов
/ 13 марта 2020

Мне нужно очистить корзину Woocommerce на случай, если я отправлю на нее более четырех товаров через URL.

Я пришел с этим кодом, но он очищает корзину, только если в ней уже пять товаров it.

//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.

Все, что мне нужно, это очистить корзину при отправке более 4 предметов по URL .

Я предпочитаю решение в PHP, но решение JS подойдет. Спасибо, кто может мне помочь.

1 Ответ

0 голосов
/ 13 марта 2020

Я нашел решение, используя бесплатный плагин Ссылки на корзину для WooCommerce и внес несколько изменений в его код.

Ниже я опишу то, что я сделал:

1) Чтобы начать установку плагина, это позволит вам добавлять продукты, используя параметр fill_cart в URL (как описано в моем вопросе)

2) редактировать файл плагина soft79-cart-links-for-woocommerce.php, найденный по адресу: yoursite/wp-content/plugins/soft79-cart-links-for-woocommerce/

3) go в строку 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, должны сначала очистить корзину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...