Попытка получить повторяющуюся сумму подписки Woocommerce для отображения в мини-карте. Кажется, есть несколько различных функций, которые могут помочь достичь этого, но ни одна из них, кажется, не работает «из коробки». Любой совет?
Повторение следующей функции в конечном итоге после нескольких обновлений страницы отобразит повторяющуюся сумму (включая НДС):
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
Спасибо @LoicTheAztec для тебя ответ что помогло мне решить это! Удалось отобразить повторяющиеся итоги с помощью следующего кода, так как у меня есть только ежемесячные подписки. Если у кого-то есть, например, еженедельные и ежемесячные периодические цены, этот метод не будет работать.
$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;
Единственные доступные функции, связанные с корзиной и оформлением заказа, находятся в Документация для разработчиков WooCommerce Подписки
Теперь я думаю, что вы ищете соответствующие данные о подписке, которые остаются в корзине. Для этого довольно просто вывести необработанные данные объекта корзины (как только вы добавили в корзину перед подпиской). Затем вы можете использовать этот код для вывода этих данных:
1) Вывод исходных данных всего объекта корзины:
print_r(WC()->cart);
И тогда вы можете использовать все Методы WC_cart как например:
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
}
После того, как вы детально изучите эти необработанные данные, вы поймете, что для отображения итогов в мини-корзине вам может понадобиться просто использовать
WC()->cart
Объект с выделенными методами WC_Cart, такими как:
WC()->cart->get_cart_total( );
Для отображения