Получение общей стоимости корзины WooCommerce в числовом формате

24 сент. 2013 г., 14:39:45
Просмотры: 80.5K
Голосов: 8

Возможно ли получить общую стоимость корзины без разметки, то есть без символа €? Сейчас я получаю сумму с помощью:

$totalamount = $woocommerce->cart->get_cart_total();  

это выдаёт €16.50

Я также пробовал это:

$totalamount = number_format($woocommerce->cart->get_cart_total(), 2, '.', '');

Но это всегда выдаёт 0.00

Есть ли в WooCommerce функция, которая выдаст общую стоимость корзины в числовом формате? Спасибо!

0
Все ответы на вопрос 2
7
24

Вот что вам нужно:

Работа с глобальной переменной:

global $woocommerce;  
$woocommerce->cart->total;

Работа с функцией:

WC()->cart->total;
11 февр. 2014 г. 10:51:27
Комментарии

Пожалуйста, добавьте объяснение к вашему ответу: почему это может решить проблему?

fuxia fuxia
11 февр. 2014 г. 11:09:02

да! это работает - убирает символ валюты

numediaweb numediaweb
5 апр. 2014 г. 20:14:31

Если использовать это в корзине, то работает корректно только при посещении корзины, но не при обновлении корзины... Кто-нибудь знает почему?

byronyasgur byronyasgur
26 мар. 2015 г. 23:28:58

Это должен быть правильный ответ. В зависимости от контекста (например, в моем случае), WC()->cart->total также отлично работает.

rrrhys rrrhys
23 сент. 2015 г. 01:13:13

На любой странице вы можете объявить переменную $woocommerce как глобальную, и тогда у вас будет доступ к большинству необходимых функций.

Aamer Shahzad Aamer Shahzad
16 нояб. 2015 г. 23:31:51

Вы также можете создать другую переменную для корзины, например так: global $woocommerce; $cart = $woocommerce->cart->get_cart();

Она будет содержать информацию, связанную с корзиной;

Используйте print_r( $cart ); для просмотра значений.

Aamer Shahzad Aamer Shahzad
16 нояб. 2015 г. 23:33:13
Показать остальные 2 комментариев
3

Обновление 2020

Ответ

См. ответ flytech для решения с использованием нативного API WooCommerce.

Примечание / Предостережение

Если вы собираетесь выполнять точные арифметические операции с денежными значениями, всегда используйте знаковые целые числа (!), представляющие наименьшую единицу валюты (цент, пенни, пайса, дирхам и т.д.).
Преобразовывайте обратно в десятичные дроби только на уровне представления вашего приложения после выполнения всех расчетов.

Это справедливо независимо от языка программирования или фреймворка.

Оригинальный ответ

Я совсем не знаю WooCommerce, поэтому, возможно, существует и нативный способ, но в любом случае, это

$amount = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );

должно сработать.

preg_replace удаляет все символы, кроме цифр и десятичной точки.

Если вам нужно выполнять математические операции, floatval преобразует значение из строки в числовое.

24 сент. 2013 г. 14:56:34
Комментарии

Спасибо, я уже нашел решение с помощью одного варианта.

Trekdrop Trekdrop
24 сент. 2013 г. 14:59:01

Для некоторых стран нужно учитывать и запятую, попробуйте это '#[^\d.,]#'

j.c j.c
19 мая 2017 г. 11:52:51

Предупрежу вас о такой проблеме: если вы установите точки и запятые в общих настройках WooCommerce, это может привести к нежелательным результатам. Пример: сумма = 1.239,90$ может быть прочитана как 1,239$. Я бы предложил это решение

j.c j.c
28 июл. 2017 г. 22:05:18