Añadir Cupones Específicos por Producto en WooCommerce con un Checkbox en la página de producto.

LucusHost, el mejor hosting

En el mundo del comercio electrónico, ofrecer descuentos personalizados y fáciles de usar puede marcar la diferencia. Si te fijas en grandes marketplaces como Amazon, Temu o Shein, verás que permiten a sus usuarios aplicar cupones directamente desde la página del producto. Esta funcionalidad mejora la experiencia del usuario y fomenta las ventas, al hacer que los descuentos sean más accesibles y visibles:

casilla aplicar cupon en producto woocommerce

En este tutorial, te enseñaré cómo copiar e implementar esta misma funcionalidad en tu tienda WooCommerce. Aprenderás a asociar cupones específicos a productos y a mostrar un checkbox en la página del producto para que tus clientes puedan aplicar el descuento con un solo clic. Todo esto con código personalizado, sin necesidad de instalar plugins adicionales.

Ventajas de aplicar la casilla de aplicar cupón en el producto

Incorporar esta funcionalidad en tu tienda WooCommerce puede ofrecer numerosas ventajas, tanto para ti como para tus clientes. Estas son algunas de las más importantes:

  • Facilita la toma de decisiones del cliente: Mostrar un descuento destacado justo en la página del producto elimina pasos innecesarios, ayudando al cliente a percibir el valor de la oferta de forma inmediata.
  • Reduce fricciones en el proceso de compra: Los usuarios no necesitan recordar ni buscar códigos de descuento. Con un simple clic en la casilla, pueden aprovechar el beneficio, lo que hace que la experiencia sea más fluida.
  • Aumenta la percepción de valor: Mostrar descuentos visibles en el producto refuerza la sensación de que el cliente está obteniendo una oferta exclusiva, incentivando la compra inmediata.
  • Impulsa las conversiones: Asociar cupones directamente a productos específicos crea urgencia y motiva al cliente a finalizar su compra, evitando distracciones o abandonos del carrito.
  • Promociona productos clave o en stock limitado: Puedes dirigir la atención hacia productos con alta rotación, promociones especiales o exceso de inventario, maximizando tus estrategias de ventas.
  • Genera confianza y transparencia: Mostrar el descuento directamente en la página del producto refuerza la percepción de una tienda confiable, donde las ofertas son claras y fáciles de usar.
  • Incrementa el ticket promedio: Esta funcionalidad puede complementar estrategias de ventas cruzadas y upselling, motivando al cliente a aprovechar otras ofertas visibles relacionadas.

Con estas ventajas, integrar esta funcionalidad en tu tienda no solo mejora la experiencia del cliente, sino que también optimiza tus resultados de ventas de forma efectiva.

Implementar en WooCommerce

Para poder tener esta funcionalidad en nuestra tienda online con WordPress, no he encontrado ningún plugin que la tenga. Es por ello, que he creado el siguiente código que tendremos que añadir al functions.php de nuestro Child Theme o bien nuestro plugin de funcionalidades como explico aquí.

// Añadir campos en la pestaña "General" de los datos del producto
add_action('woocommerce_product_options_general_product_data', 'add_coupon_fields_to_product');
function add_coupon_fields_to_product() {
    // Campo para el código del cupón
    woocommerce_wp_text_input(array(
        'id'          => '_custom_coupon_code',
        'label'       => __('Cupón Asociado', 'woocommerce'),
        'description' => __('Introduce el código del cupón que deseas asociar a este producto.', 'woocommerce'),
        'desc_tip'    => true,
        'type'        => 'text'
    ));

    // Campo para el texto del cupón
    woocommerce_wp_text_input(array(
        'id'          => '_custom_coupon_text',
        'label'       => __('Texto del Cupón', 'woocommerce'),
        'description' => __('Introduce el texto que aparecerá junto al checkbox, por ejemplo: "Aplicar cupón de 40€".', 'woocommerce'),
        'desc_tip'    => true,
        'type'        => 'text'
    ));
}

// Guardar los valores de los campos
add_action('woocommerce_admin_process_product_object', 'save_coupon_fields_to_product');
function save_coupon_fields_to_product($product) {
    if (isset($_POST['_custom_coupon_code'])) {
        $product->update_meta_data('_custom_coupon_code', sanitize_text_field($_POST['_custom_coupon_code']));
    }
    if (isset($_POST['_custom_coupon_text'])) {
        $product->update_meta_data('_custom_coupon_text', sanitize_text_field($_POST['_custom_coupon_text']));
    }
}

// Mostrar la etiqueta y el checkbox en la página del producto
add_action('woocommerce_before_add_to_cart_button', 'add_coupon_checkbox_with_label');
function add_coupon_checkbox_with_label() {
    global $product;

    // Obtener los valores configurados
    $coupon_code = $product->get_meta('_custom_coupon_code');
    $coupon_text = $product->get_meta('_custom_coupon_text');

    if (!empty($coupon_code)) {
        // Mostrar la etiqueta estilizada
        echo '<div class="apply-coupon-section">';
        echo '<span class="newCouponBadge">Cupón</span>';

        // Mostrar el checkbox con el texto personalizado
        echo '<label>';
        echo '<input type="checkbox" id="apply_coupon_checkbox" value="' . esc_attr($coupon_code) . '">';
        echo ' ' . (!empty($coupon_text) ? esc_html($coupon_text) : __('Aplicar cupón', 'woocommerce'));
        echo '</label>';
        echo '</div>';
    }
}

// Aplicar cupón vía AJAX
add_action('wp_footer', 'add_coupon_application_script');
function add_coupon_application_script() {
    if (is_product()) {
        ?>
        <script>
            jQuery(function($) {
                $('#apply_coupon_checkbox').change(function() {
                    var couponCode = $(this).val();
                    if ($(this).is(':checked')) {
                        $.ajax({
                            url: '<?php echo esc_url(admin_url('admin-ajax.php')); ?>',
                            type: 'POST',
                            data: {
                                action: 'apply_product_coupon',
                                coupon_code: couponCode
                            },
                            success: function(response) {
                                if (response.success) {
                                    alert('<?php _e("Cupón aplicado correctamente.", "woocommerce"); ?>');
                                    location.reload();
                                } else {
                                    alert(response.data);
                                }
                            }
                        });
                    }
                });
            });
        </script>
        <?php
    }
}

// Lógica de aplicación del cupón
add_action('wp_ajax_apply_product_coupon', 'apply_product_coupon');
add_action('wp_ajax_nopriv_apply_product_coupon', 'apply_product_coupon');
function apply_product_coupon() {
    if (!isset($_POST['coupon_code'])) {
        wp_send_json_error(__('No se ha enviado ningún cupón.', 'woocommerce'));
    }

    $coupon_code = sanitize_text_field($_POST['coupon_code']);
    $applied = WC()->cart->apply_coupon($coupon_code);

    if ($applied) {
        wp_send_json_success();
    } else {
        wp_send_json_error(__('El cupón no se pudo aplicar.', 'woocommerce'));
    }
}

Y como estilos de CSS a añadir para dejarlo bonito y atractivo visualmente para el usuario:

.newCouponBadge {
            font-weight: bold;
            background-color: #ff9900;
            white-space: nowrap;
            min-width: 54px;
            text-align: center;
            padding: 2px 6px;
            border-radius: 4px;
            color: #fff;
            display: inline-block;
            margin-right: 8px;
			margin-bottom: 10px;
        }
        .apply-coupon-section {
            margin-top: 10px;
        }

El código permite:

  • Añadir dos campos en la edición del producto, uno para poner el cupón asociado a ese producto y el texto que quieres que salga para describir el cupón.
  • Mostrar el checkbox o casilla para aplicar el cupón.
  • La funcionalidad para aplicar el cupón.
cupon en productos woocommerce
anadir campo aplicar cupon ficha producto woocommerce

Mostrar aviso en el catálogo

Para que el cliente sepa desde el catálogo que ese producto tiene un cupón también lo podríamos avisar como hace Amazon:

aplicar cupon personalizado en un producto woocommerce

Para aplicarlo en WooCommerce, implementamos el siguiente código:

add_action('woocommerce_product_options_general_product_data', 'dl_wc_coupon_on_product_savings_field');
function dl_wc_coupon_on_product_savings_field() {
    woocommerce_wp_text_input(array(
        'id'          => '_custom_savings_text',
        'label'       => __('Texto cupón del catálogo', 'dl_wc_coupon_on_product'),
        'description' => __('Introduzca el texto de ahorro que desea mostrar en el catálogo, por ejemplo, «Ahorre 40,00 €».', 'dl_wc_coupon_on_product'),
        'desc_tip'    => true,
        'type'        => 'text',
    ));
}

// Guardar el Texto de Ahorro
add_action('woocommerce_admin_process_product_object', 'dl_wc_coupon_on_product_save_savings_field');
function dl_wc_coupon_on_product_save_savings_field($product) {
    if (isset($_POST['_custom_savings_text'])) {
        $product->update_meta_data('_custom_savings_text', sanitize_text_field($_POST['_custom_savings_text']));
    }
}

add_filter('woocommerce_get_price_html', 'dl_wc_coupon_on_product_display_savings_text', 10, 2);
function dl_wc_coupon_on_product_display_savings_text($price, $product) {
    // Solo aplicar en páginas de catálogo, no en la ficha de producto
    if (is_product()) {
        return $price; // Devolver el precio sin modificar en la ficha de producto
    }

    // Obtener el texto de ahorro y el código del cupón
    $savings_text = $product->get_meta('_custom_savings_text');
    $coupon_code = $product->get_meta('_custom_coupon_code');

    // Mostrar el texto si hay un cupón asociado y un texto de ahorro configurado
    if (!empty($coupon_code) && !empty($savings_text)) {
        $price = '<span class="savings-text">' . esc_html($savings_text) . '</span> ' . 
                 '<span class="coupon-note">' . __('con un cupón', 'dl_wc_coupon_on_product') . '</span><br>' . 
                 $price;
    }

    return $price;
}

También añadimos un css personalizado en los estilos de nuestro theme:

.savings-text {
                display: inline-block;
                font-size: 14px;
                color: #111;
                background-color: #7fda69;
                padding: 0 6px;
                font-weight: bold;
                border-radius: 3px;
                margin-right: 5px;
            }

Tendremos como resultado:

descuento con cupon en productos seleccionar woocommerce

El código también añade un campo de edición en el producto para que pongamos lo que está en fondo verde(ej: Ahorra un 10%):

checkbox cupon woocommerce en productos

Conclusión

Añadir cupones específicos por producto con un checkbox en WooCommerce es una funcionalidad que puede transformar la experiencia de tus clientes y aumentar las conversiones.

Recuerda que en el blog tienes una guía de cupones y otros tutoriales como excluir el uso de cupones u ocultar el aviso de cupón.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)
mailerlite diegol

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

mailerlite diegol

Reader Interactions

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *