DEVPROCB
¿Cómo se obtiene el total de impuestos en WooCommerce en el functions.php
página 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. UsarWC()->cart
en cambio.
Aquí puedes usar directamente$cart
(objeto) argumento en cambio…- La propiedad correcta es
taxes
en vez detax_total
. - es mejor usar WC_Carrito obtener_impuestos() método en lugar de ser compatible con WooCommerce versión 3.0+
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();