在微型购物车中显示 Woocommerce 订阅的经常性总数

Display Woocommerce Subscription recurring total in minicart

正在尝试让 Woocommerce 订阅的经常性总计显示在微型购物车中。似乎有一些不同的功能可能有助于实现这一目标,但其中 none 似乎开箱即用。有什么建议吗?

响应以下功能,最终会在刷新几次页面后显示经常性总计(含增值税):

WC_Subscriptions_Cart::calculate_subscription_totals();

问题在于它还将正常的一次性付款小计(不含增值税)更改为经常性小计(不含增值税)。正常小计与 WC()->cart->get_cart_subtotal().

相呼应

这些是可能有助于解决此问题的其他循环总计相关函数:

WC_Subscriptions_Cart::get_recurring_cart_contents_total();
WC_Subscriptions_Cart::display_recurring_totals();

如果有任何帮助,可以在 https://github.com/wp-premium/woocommerce-subscriptions

查看源代码

与购物车和结帐相关的唯一可用功能在 WooCommerce Subscriptions developer documentation

现在我认为您要查找的是购物车中剩余的相关订阅数据。为此,输出购物车对象的原始数据非常容易(一旦您在订阅前添加到购物车)。然后你可以使用这段代码输出这个数据:

1) 输出整个购物车对象原始数据:

print_r(WC()->cart);

然后您可以使用所有 WC_cart methods,例如:

WC()->cart->get_cart_contents_count( );

2) 在 foreach 循环中输出购物车商品:

foreach ( WC()->cart->cart_contents as $item_key => $item ){
    print_r($item); echo '<br><br>'; // displaying the item raw data
    print_r($item['data']); echo '<br><br>'; // displaying the subscription object raw data
    echo $item['line_total']; echo '<br>'; // displaying item total
    echo $item['data']->subscription_price . '<br>'; // displaying subscription object total
}

Once you have looked to this raw data in details, you will understand that for displaying totals in mini cart, you might just need to use the WC()->cart object with WC_Cart dedicated methods like:

WC()->cart->get_cart_total( );

显示

感谢 @LoicTheAztec for your 帮助我解决了这个问题!由于我只有每月订阅,因此设法使用以下代码显示经常性总计。如果某人有例如每周和每月的经常性价格,则此方法将不起作用。

$recurring_total = 0;

foreach ( WC()->cart->cart_contents as $item_key => $item ){
    $item_quantity = $item['quantity'];
    $item_monthly_price = $item['data']->subscription_price;
    $item_recurring_total = $item_quantity * $item_monthly_price;
    $recurring_total += $item_recurring_total; 
}

echo $recurring_total;