Woocommerce корзину макет для получения общей суммы корзины - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно рассчитать общую сумму, которую будет стоить корзина с добавлением нескольких продуктов и купонов. Мне нужно получить эту сумму без изменения глобального WC () -> cart . Поэтому я думал создать временную корзину, добавить все предметы и купоны, а затем вернуть WC_Cart: get_total ();

Вот мой код:

//5438 is my product (simple subscription, $55 with a $50 signup fee)
//product_schedule_discount is the coupon code that removes 100% of the signup fee

$tmpCart = new WC_Cart();
$tmpCart->add_to_cart( 5438, '1', '0', array(), array() );
$tmpCart->apply_coupon('product_schedule_discount');
$tmpCart->calculate_totals( );
$cartTotal = $tmpCart->get_total();
$tmpCart->remove_coupon('product_schedule_discount');
return $cartTotal;

Этот метод работает, когда я получаю сумму, без добавления купона. Но когда я хочу добавить купон, кажется, что он применяется к сеансу пользователей, потому что, когда я перехожу на страницу корзины (полностью отделенную от того, где я использую приведенный выше код, я вижу сообщение «Купон успешно загружен». И когда я обновляю страницу, она исчезла. Вторая проблема заключается в том, что он не возвращает новый итог (с примененными купонами) до тех пор, пока я не запрослю его снова.

Почему это показывает мое сообщение на странице моей корзины? Разве это не относится к корзине, о которой я говорю? В этом случае моя $ tmpCart ?

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

Вот ссылка на методы, которые я использую:

WC_Cart :: get_totals

WC_Cart :: apply_coupon

1 Ответ

0 голосов
/ 06 сентября 2018

Вы не можете иметь 2 объекта Корзина одновременно . Когда вы создаете новый объект корзины, он заменяет существующий (если он есть). Объект Cart - это живой интерфейс, поэтому он не может работать таким образом.

Для сообщения: Это нормально, так как метод apply_coupon() генерирует уведомление, которое сохраняется в WC_Session и затем отображается сразу же после загрузки страницы (или с помощью ajax) .

По общей проблеме: У меня нет проблемы, с которой вы связаны. Я получаю правильную сумму, которая является суммой корзины со скидкой купона.

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