Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

244
Views
Cupón con 2 descuentos de productos fijos diferentes basados en ID de productos en WooCommerce

He encontrado

Cupón con 2 porcentajes de descuento diferentes según la categoría del producto en Woocommerce

Que muestra cómo alterar el % de descuento para categorías establecidas. Quiero implementar un código de descuento de verano en mi tienda que ofrece un descuento de £ 20 en una selección de productos.

El código de cupón summer21 está configurado para aplicar un descuento de producto fijo solo en las siguientes ID de producto permitidas

  • 2523, 119800, 119886 y 120253

En 3 de los 4 se debe aplicar un descuento de £ 20

Pero si el ID del producto = 119886, entonces solo se deben descontar £ 10


Intenté modificar el código a lo siguiente, pero desafortunadamente sin el resultado deseado. ¿Qué me estoy perdiendo?

 add_filter( 'woocommerce_coupon_get_discount_amount', 'alter_shop_coupon_data', 20, 5 ); function alter_shop_coupon_data( $round, $discounting_amount, $cart_item, $single, $coupon ){ ## ---- Your settings ---- ## // Related coupons codes to be defined in this array (you can set many) $coupon_codes = array('Summer21'); // Product categories for only £10 discount (IDs, Slugs or Names) $product_category10 = array('119886'); // for £10 discount $second_discount = 10; // £10 ## ---- The code: Changing the discount to £10 for specific products ---- ## if ( $coupon->is_type('fixed_product') && in_array( $coupon->get_code(), $coupon_codes ) ) { if( has_term( $product_category10, 'product_cat', $cart_item['product_id'] ) ){ $discount = $discounting_amount - $second_discount; $round = round( min( $discount, $discounting_amount ), wc_get_rounding_precision() ); } } return $round; }

Este código también solo cambia el precio del carrito, pero no muestra los precios de visualización correctos en las páginas del producto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Su código contiene varios errores.

  • has_term() no es aplicable, estamos usando in_array() en su lugar
  • No se tiene en cuenta la cantidad de artículos del carrito por producto.

Para que esta respuesta funcione, aplicamos algunos pasos

Primer paso, configuración de cupones:

  • Título: verano21
  • General > Tipo de descuento: Descuento de producto fijo
  • General > Importe del cupón: 20
  • Restricción de uso > Productos: donde productID: 2523, 119800, 119886, 120253

Segundo paso, configuración dentro de la función de código:

  • Códigos de cupón: establezca su código de cupón en minúsculas
  • ID de producto, para el segundo descuento: 119886
  • Establecer el segundo descuento: 10

Entonces obtienes:

 function filter_woocommerce_coupon_get_discount_amount( $round, $discounting_amount, $cart_item, $single, $coupon ) { // Related coupons codes to be defined in this array $coupon_codes = array( 'summer21' ); // Product IDs, for second discount $product_ids = array( 119886 ); // Second discount $second_discount = 10; // Changing the discount for specific product Ids if ( $coupon->is_type('fixed_product') && in_array( $coupon->get_code(), $coupon_codes ) ) { // Search for product ID in array product IDs if ( in_array( $cart_item['product_id'], $product_ids ) ) { // Get cart item quantity $cart_item_qty = is_null( $cart_item ) ? 1 : $cart_item['quantity']; // Discount $discount = $coupon->get_amount() - $second_discount; $discount = $single ? $discount : $discount * $cart_item_qty; $round = round( min( $discount, $discounting_amount ), wc_get_rounding_precision() ); } } return $round; } add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!