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...
the sub total refers to total price of all products in the cart and the cart total is the amount after taxes and shipping.
Use the WC()->cart method to get woocommerce cart item data. Cart page use this method to load all the values on the cart page e.g. woocommerce get cart item totals, subtotal, get cart items to count, get items price, etc.
Try this:
WC()->cart->cart_contents_total
The function get_cart_total uses wc_price function thas converts cart_contents_total to currency.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With