Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

431
Vistas
WooCommerce: Doble descuento en productos en oferta con cupón

Quiero duplicar el descuento para productos en oferta con un código de cupón.

Por ejemplo: El producto está en oferta con un 10% de descuento. Si agrego el código de cupón doublediscount quiero duplicar ese descuento al 20%.

El cupón de descuento debe tener un límite del 15%. Entonces, si un producto está en oferta con un 30 % de descuento, el descuento máximo agregado con el código de cupón debe ser del 15 %. Dando como resultado un 45% de descuento sobre el precio regular (oferta + descuento extra).

Mi código hasta ahora es este:

 add_action( 'woocommerce_before_calculate_totals', 'double_saleprice_coupon' ); function double_saleprice_coupon( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; global $woocommerce; $coupon_id = 'doublediscount'; // Loop through cart items (first loop) foreach ( $cart->get_cart() as $cart_item_key => $cart_item ){ // Check if product in cart is on sale $product = $cart_item['data']; $cart_item_regular_price = $cart_item['data']->get_regular_price(); $cart_item_sale_price = $cart_item['data']->get_sale_price(); $cart_item_diff = $cart_item_regular_price - $cart_item_sale_price; $cart_item_per_cent = round( $cart_item_diff / $cart_item_regular_price * 100, 0 ); if ( $product->is_on_sale() && wc_pb_is_bundled_cart_item($cart_item) === false && $cart_item_per_cent < 15 ) { echo 'on sale'; echo $cart_item_per_cent; } } }

Repaso todos los artículos del carrito y compruebo si están en oferta y si el descuento es inferior al 15 %. Si ese es el caso, quiero cambiar el descuento para estos artículos del carrito.

Si el artículo del carrito tiene un descuento superior al 15%, no quiero hacer nada. Entonces, el código de cupón doublediscount les aplicaría un 15%.

Simplemente no sé cómo agregar/cambiar el descuento de un artículo del carrito.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede usar el gancho woocommerce_coupon_get_discount_amount en combinación con la siguiente configuración de cupones:

  • Establezca correctamente su código de cupón: doublediscount
  • Tipo de descuento: Percentage
  • Cantidad: 15

Pasos aplicados en esta respuesta:

  • Solo si el código de cupón específico coincide y el producto está en oferta
  • Si un producto no está en oferta, no se aplicará ningún descuento (por la condición else igual a 0. Sin embargo, si esto no se aplica, simplemente puede eliminar la condición else )
  • Se calcula el porcentaje de descuento actual del producto en oferta. Si es menor que el descuento máximo agregado ( 15 ), entonces el descuento se duplica
  • Si es superior, se aplicará automáticamente el descuento máximo añadido ( 15 )

Entonces obtienes:

 function filter_woocommerce_coupon_get_discount_amount( $discount, $price_to_discount , $cart_item, $single, $coupon ) { // Returns true when viewing the cart page & only apply for this coupon if ( is_cart() || is_checkout() && $coupon->get_code() == 'doublediscount' ) { // Get an instance of the WC_Product object $product = $cart_item['data']; // Is a WC product if ( is_a( $product, 'WC_Product' ) ) { // On sale if ( $product->is_on_sale() ) { // Regular price $cart_item_regular_price = $product->get_regular_price(); // Sale price $cart_item_sale_price = $product->get_sale_price(); // Calculate the percentage difference $cart_item_diff = $cart_item_regular_price - $cart_item_sale_price; $cart_item_percentage = round( $cart_item_diff / $cart_item_regular_price * 100, 0 ); // Get maximum added discount $max_added_discount = $coupon->get_amount(); // Less than maximum added discount if ( $cart_item_percentage < $max_added_discount ) { $discount = round( ( $price_to_discount * $cart_item_percentage ) / 100, 0 ); } } else { $discount = 0; } } } return $discount; } add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda