Get woocommerce carts total amount

111,261

Solution 1

You need to call the global variable to ensure that it gets the correct values.

If you add

 global $woocommerce;

just before

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

that should solve your problem.

Solution 2

Try this:

WC()->cart->cart_contents_total

The function get_cart_total uses wc_price function thas converts cart_contents_total to currency.

Solution 3

This also work nicelly.

WC()->cart->total

Solution 4

As of late 2018, the best way is to use get_cart_contents_total(). This is the total of items in the cart after discounts.

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

Other methods are available for more specific needs, just have a look at the docs.

Solution 5

This works perfectly and removes currency symbol:

     $woocommerce->cart->total;
Share:
111,261
Howli
Author by

Howli

I like to code

Updated on November 01, 2021

Comments

  • Howli
    Howli over 2 years

    I am trying to apply a discount to a carts total price, but I can only do it to the item base price and not the over all price. I Googled and came across this post in the wordpress stackoverflow:

    $amount = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) ); 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.

    I tried adding:

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

    and changing

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

    to

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

    But I get the following error:

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