Ottenere il prezzo totale del carrello Woocommerce in formato numerico

24 set 2013, 14:39:45
Visualizzazioni: 80.5K
Voti: 8

È possibile ottenere il prezzo totale del carrello senza markup aggiuntivi, quindi senza il simbolo €? Attualmente sto ottenendo l'importo con:

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

questo restituirà €16.50

Ho provato anche questo:

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

Ma questo restituisce sempre 0.00

Esiste una funzione get di WooCommerce che restituirà il prezzo totale del carrello in formato numerico? Grazie!

0
Tutte le risposte alla domanda 2
7
24

Ecco quello che desideri:

Lavorare con la variabile globale:

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

Lavorare con la funzione:

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

Per favore aggiungi una spiegazione alla tua risposta: perché potrebbe risolvere il problema?

fuxia fuxia
11 feb 2014 11:09:02

sì! funziona; rimuove il simbolo della valuta

numediaweb numediaweb
5 apr 2014 20:14:31

Se uso questo nel carrello funziona correttamente solo quando si visita il carrello, non se qualcuno usa aggiorna carrello... qualcuno sa perché?

byronyasgur byronyasgur
26 mar 2015 23:28:58

Questa dovrebbe essere la risposta corretta. A seconda del contesto (ad esempio il mio), anche WC()->cart->total funziona bene.

rrrhys rrrhys
23 set 2015 01:13:13

in qualsiasi pagina puoi dichiarare $woocommerce come variabile globale e poi puoi accedere alla maggior parte delle cose che ti servono.

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

puoi anche creare un'altra variabile del carrello in questo modo: global $woocommerce; $cart = $woocommerce->cart->get_cart();

questo contiene le informazioni relative al carrello;

usa print_r( $cart ); per accedere ai valori.

Aamer Shahzad Aamer Shahzad
16 nov 2015 23:33:13
Mostra i restanti 2 commenti
3

Aggiornamento 2020

Risposta

Vedi la risposta di flytech per una soluzione che utilizza l'API nativa di WooCommerce.

Nota / Avvertenza

Se devi eseguire operazioni aritmetiche corrette con valori monetari, utilizza sempre interi con segno (!) che rappresentano la più piccola denominazione di una determinata valuta (centesimi, penny, paisa, dirham, ecc.).
Converti nuovamente in frazioni decimali solo a livello di presentazione dell'applicazione dopo che tutti i calcoli sono stati completati.

Questo vale indipendentemente dal linguaggio o dal framework utilizzato.

Risposta originale

Non conosco affatto WooCommerce e quindi potrebbe esserci anche un modo nativo, ma comunque, questo

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

dovrebbe funzionare.

La funzione preg_replace elimina tutto tranne i caratteri decimali e i punti.

Se hai bisogno di fare calcoli con questo valore, floatval converte il valore da stringa a numerico.

24 set 2013 14:56:34
Commenti

Grazie, ho già risolto con una sorta di soluzione in effetti.

Trekdrop Trekdrop
24 set 2013 14:59:01

Per alcuni paesi devi considerare anche la virgola, prova questo '#[^\d.,]#'

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

Ti avviso riguardo a questo problema: se imposti punti e virgole nelle impostazioni generali di woocommerce puoi ottenere risultati indesiderati con questo metodo. Esempio: importo = 1.239,90$ può essere letto come 1,239$. Suggerirei questa soluzione

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