Solución:
Esto no responde a esta pregunta. Loic’s lo hace. Esta es otra forma de hacerlo para mostrar una línea de pedido con un 10% de descuento:
function prefix_add_discount_line( $cart ) {
$discount = $cart->subtotal * 0.1;
$cart->add_fee( __( 'Down Payment', 'yourtext-domain' ) , -$discount );
}
add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );
Desde Woocommerce 3.2+
no funciona más con la nueva claseWC_Cart_Totals
…Nueva respuesta: cambie el total del carrito usando Hooks en Woocommerce 3.2+
Primero woocommerce_cart_total
gancho es un filtrar gancho, no un gancho de acción. Tambien como wc_price
argumento en woocommerce_cart_total
es el precio formateado, no podrá aumentarlo en un 10%. Por eso devuelve cero.
Antes de Woocommerce v3.2 funciona como algunos
WC_Cart
se puede acceder directamente a las propiedades
Es mejor que use una función personalizada enganchada woocommerce_calculate_totals
gancho de acción
Por aquí:
// Tested and works for WooCommerce versions 2.6.x, 3.0.x and 3.1.x
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() ):
## Displayed subtotal (+10%)
// $cart_object->subtotal *= 1.1;
## Displayed TOTAL (+10%)
// $cart_object->total *= 1.1;
## Displayed TOTAL CART CONTENT (+10%)
$cart_object->cart_contents_total *= 1.1;
endif;
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
También es posible utilizar WC_cart
add_fee()
método en este gancho, o úselo por separado como en Cristina respuesta.