Obtener el precio total del carrito de Woocommerce en formato numérico

24 sept 2013, 14:39:45
Vistas: 80.5K
Votos: 8

¿Es posible obtener el precio total del carrito sin ningún formato? ¿Es decir, sin el símbolo €? Actualmente estoy obteniendo el monto con:

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

esto devolverá €16.50

También intenté esto:

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

Pero esto siempre devuelve 0.00

¿Existe alguna función de Woocommerce que devuelva el precio total del carrito en formato numérico? ¡Gracias!

0
Todas las respuestas a la pregunta 2
7
24

Esto es lo que necesitas:

Trabajando con variable global:

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

Trabajando con función:

WC()->cart->total;
11 feb 2014 10:51:27
Comentarios

Por favor, agrega una explicación a tu respuesta: ¿por qué podría eso resolver el problema?

fuxia fuxia
11 feb 2014 11:09:02

¡sí! esto funciona; elimina el símbolo de moneda

numediaweb numediaweb
5 abr 2014 20:14:31

Si uso esto en el carrito, solo funciona correctamente cuando se visita el carrito, no si alguien usa actualizar carrito... ¿alguien sabe por qué?

byronyasgur byronyasgur
26 mar 2015 23:28:58

Esta debería ser la respuesta correcta. Dependiendo del contexto (como el mío), WC()->cart->total también funciona bien.

rrrhys rrrhys
23 sept 2015 01:13:13

en cualquier página puedes declarar $woocommerce como variable global y luego podrás acceder a la mayoría de las cosas que necesitas.

Aamer Shahzad Aamer Shahzad
16 nov 2015 23:31:51

también puedes crear otra variable del carrito así: global $woocommerce; $cart = $woocommerce->cart->get_cart();

esto contiene lo relacionado con el carrito;

haz un print_r( $cart ); para acceder a los valores.

Aamer Shahzad Aamer Shahzad
16 nov 2015 23:33:13
Mostrar los 2 comentarios restantes
3

Actualización 2020

Respuesta

Consulta la respuesta de flytech para una solución que utiliza la API nativa de WooCommerce.

Nota / Advertencia

Si vas a realizar operaciones aritméticas con valores monetarios, siempre utiliza enteros con signo (!) que representen la denominación más pequeña de una moneda dada (Centavo, Penny, Paisa, Dirham, etc.).
Solo convierte de vuelta a fracciones decimales en la capa de presentación de tu aplicación después de que todos los cálculos estén completos.

Esto aplica independientemente del lenguaje o framework que utilices.

Respuesta original

No conozco woocommerce en absoluto y por lo tanto puede que exista una forma nativa también, pero de cualquier manera, esto

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

debería funcionar.

El preg_replace elimina todo excepto los caracteres decimales y los puntos.

Si necesitas realizar operaciones matemáticas con él, el floatval convierte el valor de una cadena a uno numérico.

24 sept 2013 14:56:34
Comentarios

Gracias, ya lo resolví con algún tipo de solución efectivamente.

Trekdrop Trekdrop
24 sept 2013 14:59:01

Para algunos países también debes considerar la coma, prueba esto '#[^\d.,]#'

j.c j.c
19 may 2017 11:52:51

Te advertiría sobre este problema: si configuras puntos y comas en los ajustes generales de WooCommerce puedes obtener resultados no deseados con este método. Ejemplo: cantidad = 1.239,90$ puede leerse como 1,239$. Sugeriría esta solución

j.c j.c
28 jul 2017 22:05:18