Поддержка WooCommerce Удаление из корзины

  • Всем привет. Мне надо сделать список населенных пунктов select’ом и у каждого будет свой стоимость доставки. Я поискал и бесплатного плагина не нашел для этого. Сделал список городов. Сделал для каждого города товар (Платная доставка) со своей ценой. И при выборе города, добавляю в корзину соответствующий товар. Это я сделал и работает. Но вот если выбрать другой город, то добавиться еще товар Платная доставка и будет уже 2 Платные доставки. Мне нужно, чтобы прежний удалился, прежде чем добавиться другой.

    $('tr.woocommerce-cart-form__cart-item').each(function(){
    if ($(this).find('.product-name a').text().indexOf('доставка') > -1) {
    $(this).find('.product-remove a').trigger('click');
    return false;
    }
    });

    Делаю вот так. Но это работает через раз. Может кто подскажет как это сделать? Вот добавляю товар так ?post_type=product&add-to-cart=123. Может можно как-то удалить через ссылку?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Вечер добрый.

    Если коротко то проблема в вашем коде заключается в том, что он удаляет только первый элемент в списке товаров, который содержит слово «доставка». Если соответственно в корзине есть несколько элементов с таким именем, то ваш код удалит только первый элемент, а остальные остаются в корзине.

    Автор noress

    (@noress)

    Да, я специально так сделал. Мне там не нужно несколько элементов, там должен быть один эл с доставкой, после добавления другого, то прежний должен удалиться. И опять один будет. Но у меня иногда то все удалит, то ничего не удаляет, то норм работает. Не пойму. Я и без return false; пробовал, но все равно также

    Утро доброе.

    На сколько помню в WooCommerce есть такое понятие как «Зона Доставки». Где можно указывать стоимость доставки до выбранного вами региона/города. И по том данная стоимость прибавляется к стоимости товара. И не надо тогда делать отдельно кучу товаров «Платная доставка». Вы пробовали задавать параметры доставки через настройки? (Идем на вкладку: WooCommerce >>> Настройки >>> Доставка >>> Зона Доставки).

    Автор noress

    (@noress)

    Доброе утро. Пробовал, но у меня города внутри республики. Там нет таких регионов. У меня их 45. Если отмести одинаковые цены, то 20 платных доставок. Вот пытаюсь выкрутиться. Вот жалко, что на добавление есть get add-to-cart, а на удаление нет. Точнее там есть remove_item, но там идет какой то сгенерированный ид, а не ид товара

    Автор noress

    (@noress)

    наверно попробую ajax запросом отправлять как то ид в php и там удалить и обновить корзину.

    Понятно.

    Тогда посмотрите как вариант такой код. На его основе полагаю можно попробовать сделать решение для вашей задачи:

    // Получить объект корзины
    $cart = WC()->cart;
    
    // Получить содержимое корзины
    $cart_items = $cart->get_cart();
    
    // Пройтись по товарам в корзине и удалить все платные доставки
    foreach ( $cart_items as $cart_item_key => $cart_item ) {
        if ( strpos( $cart_item['data']->get_name(), 'Платная доставка' ) !== false ) {
            $cart->remove_cart_item( $cart_item_key );
        }
    }

    Сообщайте…

    Автор noress

    (@noress)

    Ага, спасибо за ответ @ipsoltl

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Удаление из корзины» закрыта для новых ответов.