Tengo problemas con el total del carrito que solo muestra 0
Esencialmente, lo que estoy tratando de hacer es solo aceptar un depósito total de una cierta cantidad después de que todos los artículos del carrito se hayan agregado al subtotal de los carritos.
Entonces, por ejemplo, si el cliente agrega $ 100 en artículos, solo pagaría $ 10 inicialmente o (10%) del subtotal como valor total.
Tomé el código de aquí: Change total and tax_total Woocommerce y personalízalo de esta manera:
add_action('woocommerce_cart_total', 'calculate_totals', 10, 1); function calculate_totals($wc_price){ $new_total = ($wc_price*0.10); return wc_price($new_total); }Pero la cantidad total muestra 0.00 cuando ese código está habilitado. Si eliminé el código, obtengo el total estándar.
Tampoco pude encontrar en el sitio de woocommerce donde se enumera la API completa, solo artículos genéricos relacionados con cómo crear un complemento.
Cualquier ayuda o un punto en la dirección correcta sería genial.
Esto no responde a esta pregunta. Loic's sí. 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+ ya no funciona con la nueva Clase
WC_Cart_Totals...Nueva respuesta: cambiar el total del carrito usando Hooks en Woocommerce 3.2+
El primer gancho woocommerce_cart_total es un gancho de filtro , no un gancho de acción. Además, como el argumento wc_price en woocommerce_cart_total es el precio formateado , no podrá aumentarlo en un 10%. Por eso devuelve cero.
Antes de Woocommerce v3.2 , funciona ya que se puede acceder directamente a algunas propiedades de
WC_Cart
Debería usar mejor una función personalizada enganchada en el gancho de acción woocommerce_calculate_totals
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 secundario activo (o tema) o también en cualquier archivo de complemento.
También es posible usar el método WC_cart
add_fee()en este enlace, o usarlo por separado como en la respuesta de Cristina .