Woocommerce obtient le prix total du panier dans un format numérique
2 réponses
- votes
-
- 2013-09-24
Mise àjour 2020
Voir la réponse deflytech pour une solution utilisant l'APInative de WooCommerce.
Remarque/miseen garde
Si vousenvisagez defaire une arithmétique correcte avec des valeursmonétaires, toujours utilisez desentiers signés (!) représentant lapluspetite dénomination d'une devise donnée (Cent,Penny,Paisa,Dirham,parexemple).
Ne reconvertissezen fractions décimales que dans la couche deprésentation de votre application après tous les calculs.Celaest vrai quel que soit le langage ou le cadre.
Réponse d'origine
Jene connaispas dutout woocommerceet doncilpourrait y avoir aussi uneméthodenative,mais detoutefaçon,ceci
$amount = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
devraitfaire l'affaire.
Le
preg_replace
éliminetout sauf les caractères décimauxet les deuxpoints.Si vous souhaitezfaire des calculs avec lui,le
floatval
convertit la valeur d'une chaîneen une valeurnumérique.Update 2020
Answer
See flytech's answer for a solution using the native WooCommerce API.
Note / Caveat
If you're going to do proper arithmetic with monetary values, always use signed integers (!) representing the smallest denomination of a given currency (Cent, Penny, Paisa, Dirham, e.g.).
Only convert back to decimal fractions in the presentation layer of your application after all calculations are done.This holds true regardless of language or framework.
Original answer
I don't know woocommerce at all and hence there might be a native way as well, but anyhow, this
$amount = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
should do.
The
preg_replace
eliminates everything but decimal characters and colons.Should you care to do math with it, the
floatval
converts the value from a string to a numeric one.-
Merci,je l'ai déjàtravaillé avec une sorte de solutionen effet.Thanks, I already worked it out with some kind of solution indeed.
- 0
- 2013-09-24
- Trekdrop
-
Pour certainspays,vous devez égalementtenir compte de la virgule,essayez ceci '# [^ \ d.,] #'For some countries you have to consider the comma too, try this '#[^\d.,]#'
- 0
- 2017-05-19
- j.c
-
Je vous avertirais de ceproblème: si vous définissez despointset des virgules dans lesparamètresgénéraux de woocommerce,vouspouvez obtenir des résultatsindésirables avec cetteméthode.Exemple:montant=1,239,90 $peut être lu comme 1,239 $.Je suggère [cette solution] (https://stackoverflow.com/questions/30063173/woocommerce-get-cart-total-as-number#answer-42433145)I'd warn you about this issue: if you set dots and commas in woocommerce general settings you can have unwanted results with this method. Example: amount = 1.239,90$ can be read as 1,239$. I'd suggest [this solution](https://stackoverflow.com/questions/30063173/woocommerce-get-cart-total-as-number#answer-42433145)
- 1
- 2017-07-28
- j.c
-
- 2014-02-11
C'est ce que vous voulez:
Travailler avec une variableglobale:
global $woocommerce; $woocommerce->cart->total;
Utilisation de lafonction:
WC()->cart->total;
That is what you want:
Working with global variable:
global $woocommerce; $woocommerce->cart->total;
Working with function:
WC()->cart->total;
-
Veuillez ajouter uneexplication à votre réponse: **pourquoi ** celapourrait-il résoudre leproblème?Please add an explanation to your answer: **why** could that solve the problem?
- 4
- 2014-02-11
- fuxia
-
Oui!celamarche;ilenlève le symbolemonétaireyes! this works; it strips the currency symbol
- 0
- 2014-04-05
- numediaweb
-
Sij'utilise ceci dans lepanier,celane fonctionne correctement que lorsque lepanierest visité,pas si quelqu'un utilise lepanier demise àjour ... quelqu'un saitpourquoi?If I use this in the cart it only works properly when the cart is visited, not if someone uses update cart ... anyone know why?
- 1
- 2015-03-26
- byronyasgur
-
Cela devrait être labonne réponse. Selon le contexte (parexemple lemien),WC () -> cart->totalfonctionne égalementbien.This should be the correct answer. Depending on context (e.g. mine), WC()->cart->total also works nicely.
- 0
- 2015-09-22
- rrrhys
-
surn'importe quellepage,vous déclarez $ woocommerce comme variableglobaleet vouspouvez accéder à laplupart des éléments dont vous avezbesoin.on any page you declare $woocommerce as global variable and the you can access most of the stuff that you need.
- 0
- 2015-11-16
- Aamer Shahzad
-
vouspouvez également créer une autre variable depanier comme celle-ci global $ woocommerce; $ cart=$ woocommerce-> cart->get_cart (); cela contient les éléments liés aupanier; faire unprint_r ($ cart);pour accéder aux valeurs.you can also create another cart variable like this global $woocommerce; $cart = $woocommerce->cart->get_cart(); this contains the cart related stuff; do a print_r( $cart ); to access the values.
- 0
- 2015-11-16
- Aamer Shahzad
-
https://docs.woocommerce.com/wc-apidocs/source-class-WC_Cart.html#288-298https://docs.woocommerce.com/wc-apidocs/source-class-WC_Cart.html#288-298
- 0
- 2020-05-24
- Tosh
Est-ilpossible d'obtenir leprixtotal dupanier sans aucunemajoration.Alors sans le symbole €?En cemoment,j'obtiens lemontant avec:
cela donnera 16,50 €
J'ai aussiessayé ceci:
Mais cela donnetoujours 0,00
Existe-t-il unefonctionget woocommerce qui donnera unformatnumérique duprixtotal dupanier?Merci!