web-dev-qa-db-fra.com

Obtenir le montant total des chariots woocommerce

J'essaie d'appliquer un rabais sur le prix total d'un chariot, mais je ne peux le faire que sur le prix de base de l'article et non sur le prix global. J'ai cherché sur Google et suis tombé sur this post dans le Wordpress stackoverflow:

$ amount = floatval (preg_replace ('# [^\d.] #', '', $ woocommerce-> cart-> get_cart_total ())); Le preg_replace élimine tout sauf les caractères décimaux et les deux-points.

Si vous avez envie de faire des calculs avec cela, floatval convertit la valeur d'une chaîne à une numérique.

J'ai essayé d'ajouter:

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

et changer

$discount = round( (($discounting_amount / 100 ) *  $this->amount)*-1, WC()->cart->dp);

à

$discount = round( (($discounting_amount / 100 ) *  $amount2)*-1, WC()->cart->dp);

Mais j'obtiens l'erreur suivante:

Fatal error: Call to a member function get_cart_total() on a non-object in...
19
Howli

Vous devez appeler la variable globale pour vous assurer qu'elle obtient les valeurs correctes.

Si vous ajoutez 

 global $woocommerce;

juste avant

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

ceci devrait régler votre problème.

20
Ronan

Essaye ça:

WC()->cart->cart_contents_total

La fonction get_cart_total utilise la fonction wc_price qui convertit cart_contents_total en devise.

20
zennin

Cela fonctionne aussi bien.

WC()->cart->total

8
colapsnux

Cela fonctionne parfaitement et supprime le symbole monétaire:

     $woocommerce->cart->total;
5
Muvans
global $woocommerce;
    $amount = $woocommerce->cart->cart_contents_total+$woocommerce->cart->tax_total;

Vous pouvez également convertir $ montant en valeur flottante selon vos besoins.

4
Deepak Kumar

Pour afficher le total des paniers, taxes et remises compris, utilisez cette option.

$ordertotal = wp_kses_data( WC()->cart->get_total() );
1
typocoder

À la fin de 2018, le meilleur moyen consiste à utiliser get_cart_contents_total(). C'est le total des articles dans le panier après les remises. 

WC()->cart->get_cart_contents_total(); // Float

D'autres méthodes sont disponibles pour des besoins plus spécifiques, il suffit de regarder les docs .

0
Buzut

$ totalamount = $ woocommerce-> cart-> cart_contents_total; 

echo $ totalamount;

0
mital korat