En este artículo aprenderás a agregar la funcionalidad de aplicar automáticamente un cupón en WooCommerce cuando un cliente agregue ciertos productos al carrito. También veremos cómo mostrar un mensaje de confirmación para mejorar la experiencia del usuario.
- Introducción
WooCommerce permite a los clientes ingresar códigos de descuento manualmente, pero en algunos casos es conveniente que el descuento se aplique automáticamente cuando ciertos productos estén en el carrito. Esto puede ser útil para promociones específicas o descuentos exclusivos en ciertos productos.
En este tutorial, aprenderás a:
- Aplicar un cupón automáticamente si un cliente agrega ciertos productos al carrito.
- Mostrar un mensaje cuando el cupón se aplique.
- Eliminar el cupón si los productos elegibles son eliminados del carrito.
- Configurar un Cupón en WooCommerce
Antes de agregar el código, primero debemos crear un cupón en WooCommerce:
- Ve a WooCommerce > Marketing > Cupones en el panel de administración.
- Haz clic en Agregar Cupón.
- Introduce un nombre para el cupón (ejemplo: DESCUENTO10).
- Define el tipo de descuento (por ejemplo, un porcentaje o cantidad fija).
- En la pestaña Restricciones de uso, selecciona los productos a los que se aplicará el cupón.
- Guarda el cupón.
Si no tienes activado la opción de crear cupones tienes que ir a Woocommerce / Ajustes / General y activar la casilla de Activar el uso de códigos de cupones

- Agregar el Código en functions.php
Para aplicar automáticamente el cupón, agregaremos el siguiente código al archivo functions.php del tema activo o usaremos un plugin de fragmentos de código como Code Snippets.
Para mostrar un mensaje en la página de pago y carrito indicando que el cupón se ha aplicado correctamente, podemos agregar una notificación de WooCommerce cuando el cupón esté activo.
Aquí tienes el código completo con el mensaje añadido:
add_action( 'woocommerce_before_cart', 'aplicar_cupon_para_productos_especificos' );
add_action( 'woocommerce_before_checkout_form', 'aplicar_cupon_para_productos_especificos' );
function aplicar_cupon_para_productos_especificos() {
$codigo_cupon = 'DESCUENTO10'; // Reemplazar con el código del cupón
$productos_permitidos = array( 123, 456 ); // IDs de productos elegibles
$encontrado = false;
foreach ( WC()->cart->get_cart() as $item ) {
if ( in_array( $item['product_id'], $productos_permitidos ) ) {
$encontrado = true;
break;
}
}
if ( $encontrado ) {
if ( ! WC()->cart->has_discount( $codigo_cupon ) ) {
WC()->cart->apply_coupon( $codigo_cupon );
wc_add_notice( '¡Descuento aplicado! Se ha activado el cupón de descuento.', 'success' );
}
} else {
if ( WC()->cart->has_discount( $codigo_cupon ) ) {
WC()->cart->remove_coupon( $codigo_cupon );
wc_add_notice( 'El cupón de descuento ha sido eliminado porque los productos no califican.', 'notice' );
}
}
}
- Explicación del Código
4.1. Acción woocommerce_before_cart y woocommerce_before_checkout_form
Estas acciones ejecutan la función en la página del carrito y en la página de finalización de compra.
4.2. Definición del Cupón y Productos
- $codigo_cupon = ‘DESCUENTO10’: Define el cupón que se aplicará.
- $productos_permitidos = array( 123, 456 ): Lista de IDs de productos que activan el cupón.
Cómo obtener los ID de los productos:
- Ve a Productos en el panel de administración de WooCommerce.
- Edita un producto y revisa la URL en la barra de direcciones. El ID aparece como
?post=123
.- Agrega esos ID en la variable
$productos_permitidos
.Con este código, solo se aplicará el cupón cuando los productos correctos estén en el carrito.
4.3. Verificación de Productos en el Carrito
Se recorre el carrito con foreach para ver si alguno de los productos elegibles está presente.
Cómo funciona:
- Verifique si los productos con los ID especificados (
$productos_permitidos
) están en el carrito.- Si hay al menos uno de esos productos, aplica el cupón automáticamente.
- Si el usuario elimina estos productos del carrito, se quita el cupón.
4.4. Aplicar el Cupón
Si se encuentra un producto permitido y el cupón aún no ha sido aplicado, se aplica con WC()->cart->apply_coupon( $codigo_cupon ); y se muestra un mensaje de éxito con wc_add_notice().
4.5. Eliminar el Cupón Si No Hay Productos Elegibles
Si los productos elegibles no están en el carrito y el cupón sigue activo, este se elimina con WC()->cart->remove_coupon( $codigo_cupon ); y se muestra un aviso al usuario.
- Prueba del Código
Para asegurarte de que el código funciona correctamente:
- Agrega un producto elegible al carrito y ve a la página del carrito o finalización de compra.
- Verifica que el descuento se aplique automáticamente.
- Elimina el producto elegible y confirma que el cupón también se elimina.
- Consideraciones Finales
- Si el cupón no se aplica, asegúrate de que el ID del producto sea correcto.
- Prueba con diferentes productos y verifica que la funcionalidad es la esperada.
- Si usas un plugin de caché, limpia la caché para evitar conflictos.
Otros formatos
Mostrar el código del cupón en la página de pago
Puedes agregar un pequeño recordatorio de texto del cupón con código en functions.php
o un complemento de fragmentos:
add_action( 'woocommerce_review_order_before_payment', 'mostrar_codigo_cupon_checkout' );
function mostrar_codigo_cupon_checkout() {
echo '<p style="font-size: 14px; color: #333;">Usa el código <strong>DESCUENTO10</strong> para obtener un 10% de descuento.</p>';
}
Esto mostrará un mensaje antes de la sección de pago registrando el código del cupón.
Aplicar automáticamente el cupón en el checkout
Si quieres que el cupón se aplique automáticamente sin que el usuario lo escriba, usa este código en functions.php
:
add_action( 'woocommerce_before_cart', 'aplicar_cupon_automatico' );
add_action( 'woocommerce_before_checkout_form', 'aplicar_cupon_automatico' );
function aplicar_cupon_automatico() {
$codigo_cupon = ‘DESCUENTO10’; // Cambia esto por tu código de cupón
if ( ! WC()->cart->has_discount( $codigo_cupon ) ) {
WC()->cart->apply_coupon( $codigo_cupon );
wc_print_notices(); // Muestra mensajes de éxito o error
}
}
Esto aplicará el cupón automáticamente cuando el usuario acceda al carrito o checkout.
Si usas un complemento de cupones avanzados , como Cupones inteligentes , también puedes configurar cupones que se aplican automáticamente según condiciones como productos en el carrito o total de compra.
📈 Conclusión
Con este método, WooCommerce aplicará automáticamente un cupón si un cliente agrega productos específicos al carrito, mejorando la experiencia del usuario y facilitando la aplicación de descuentos.
¡Esperamos que este tutorial te ayude a mejorar tu tienda en línea!