¿Cómo se obtiene el total de impuestos en WooCommerce en la página functions.php
en WordPress, usando:
global $woocommerce; $discount = $woocommerce->cart->tax_total;
Pero no está devolviendo ningún valor.
¿Cómo puedo obtener el total de impuestos del carrito?
Esencialmente, quiero que el impuesto se calcule para el usuario, pero luego lo reduzca, ya que el cliente pagará los impuestos sobre COD.
Código completo a continuación:
add_action( 'woocommerce_calculate_totals', 'action_cart_calculate_totals', 10, 1 ); function action_cart_calculate_totals( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; if ( !WC()->cart->is_empty() ): $cart_object->cart_contents_total *= .10 ; endif; } //Code for removing tax from total collected function prefix_add_discount_line( $cart ) { global $woocommerce; $discount = $woocommerce->cart->tax_total; $woocommerce->cart->add_fee( __( 'Tax Paid On COD', 'your-text-domain' ) , - $discount ); } add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );
global $woocommerce; $woocommerce->cart
está obsoleto para Cart. Utilice WC()->cart
en su lugar.$cart
(objeto) en su lugar...taxes
en lugar de tax_total
.Para lograr lo que está intentando, su código será:
// 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 ); }
El código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.
Este código está probado y funciona.
Está utilizando un nombre de función incorrecto. La función correcta es la siguiente: -
WC()->cart->get_tax_totals( );
En lugar de usar $woocommerce->cart->tax_total; para obtener el impuesto total del carrito, puede hacerlo restando el total del carrito sin impuestos del total del carrito.
Puede hacer esto siguiendo el código: -
$total_tax = floatval( preg_replace( '#[^\d.]#', '', WC()->cart->get_cart_total() ) ) - WC()->cart->get_total_ex_tax();
Si desea obtener una matriz para todos los impuestos, puede obtener el siguiente código: -
WC()->cart->get_taxes( );
Podemos usar esta función que funcionó para mí.
WC()->cart->get_total_tax();