Get Cart Tax Total programmatically in WooCommerce
global $woocommerce; $woocommerce->cart
is obsolete for Cart. UseWC()->cart
instead.
Here you can use directly$cart
(object) argument instead…- The correct property is
taxes
instead oftax_total
. - Is better to use WC_Cart get_taxes() method intead to be compatible with WooCommerce version 3.0+
To achieve what you are trying to Your code is going to be:
// For Woocommerce 2.5+ (2.6.x and 3.0)add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line', 10, 1 );function prefix_add_discount_line( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $discount = 0; // Get the unformated taxes array $taxes = $cart->get_taxes(); // Add each taxes to $discount foreach($taxes as $tax) $discount += $tax; // Applying a discount if not null or equal to zero if ($discount > 0 && ! empty($discount) ) $cart->add_fee( __( 'Tax Paid On COD', 'your-text-domain' ) , - $discount );}
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
This code is tested and works.
You are using wrong function name. Correct function is as below :-
WC()->cart->get_tax_totals( );
Instead of using $woocommerce->cart->tax_total; to get cart total tax, you can do this by subtracting cart total excluding tax from cart total.
You can do this by following code :-
$total_tax = floatval( preg_replace( '#[^\d.]#', '', WC()->cart->get_cart_total() ) ) - WC()->cart->get_total_ex_tax();
If you want to get array for all taxes then you can get through below code :-
WC()->cart->get_taxes( );