Obtenga el total de impuestos del carrito mediante programación en WooCommerce

2 minutos de lectura

avatar de usuario
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' );

  1. global $woocommerce; $woocommerce->cart está obsoleto para Cart. Usar WC()->cart en cambio.
    Aquí puedes usar directamente $cart (objeto) argumento en cambio…
  2. La propiedad correcta es taxes en vez de tax_total.
  3. 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();

¿Ha sido útil esta solución?