【问题标题】:Woocommerce cart mockup for retrieving cart total用于检索购物车总数的 Woocommerce 购物车模型
【发布时间】:2018-09-06 07:23:47
【问题描述】:

我需要计算添加了多种产品和优惠券的购物车的总费用。我需要在不更改全局 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

【问题讨论】:

    标签: php wordpress methods woocommerce cart


    【解决方案1】:

    您不能同时拥有 2 个购物车对象。当您创建一个新的购物车对象时,它会替换现有的(如果有的话)。 Cart 对象是一个实时的前端对象,所以它不能这样工作。

    对于消息:这是正常的,因为apply_coupon()方法会生成一个通知,该通知存储在WC_Session中,然后在加载页面后立即显示(或使用ajax)。

    对于整个问题:我没有你提到的问题。我得到了正确的总数,即带有优惠券折扣的购物车总数。

    【讨论】:

    • 这完全有道理。我也得到正确的数量,但只是偶尔。真奇怪。但我想我将不得不在这条路上走很长一段路。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多