Excluir el uso de cupones en WooCommerce

LucusHost, el mejor hosting

Dependiendo del tipo de estrategia que tenemos con los cupones, muchas veces nos conviene excluirlos porque no saldría rentable, para premiar a un tipo de rol/usuario o que sea temporal. En este tutorial vamos a ver cómo podemos hacerlo.

Tanto por los ajustes por defecto de WooCommerce, plugins o modificando el código. Si no sabéis aun usar los cupones os recomiendo este tutorial.

Excluirlo con los ajustes de WooCommerce

Por defecto, cada cupón lo podemos excluir de varias formas desde la pestaña de restringir su uso:

  • Gasto mínimo o máximo.
  • Por uso individual.
  • Excluir artículos rebajados.
  • Excluir categorías o productos
  • Por correos electrónicos
  • Por marcas(si hemos instalado el complemento)

Estos ajustes muchas veces se nos pueden quedar cojos para ciertas estrategias. Por ejemplo ¿Cómo hacemos para excluir ciertos productos que no funcione ningún cupón? ¿Tenemos que ir uno por uno? Os explico…

Excluir el uso de cupones en varios productos globalmente

Con esto me refiero a no permitir que el descuento del cupón se aplique a este producto. Para ello en cada producto vamos a añadir un checkbox para excluir su uso:

excluir cupones por producto woocommerce

Para conseguir esto, vamos a añadir el siguiente código a nuestro WordPress. Podéis añadir el código el el fichero functions.php de vuestro Child Theme o bien en vuestro plugin de funcionalidades como explico aquí.

// Crear un campo personalizado en la pestaña Configuracion general del producto
add_action( 'woocommerce_product_options_general_product_data', 'dl_anadir_campo_checkbox_excluir_cupones_producto' );
function dl_anadir_campo_checkbox_excluir_cupones_producto(){
global $post;

echo '<div class="product_custom_field">';

// Campo de casilla de verificación de excluir producto
woocommerce_wp_checkbox( array(
'id' => '_disabled_for_coupons',
'label' => __('No permitir uso de cupones en este producto', 'woocommerce'),
'description' => __('Desactivar este producto de los descuentos de cupones', 'woocommerce'),
'desc_tip' => 'true',
) );

echo '</div>';;
}

// Guarda el campo personalizado y actualiza todos los ids de producto excluidos en los ajustes de WP
add_action( 'woocommerce_process_product_meta', 'dl_guardar_campo_excluir_cupones_producto', 10, 1 );
function dl_guardar_campo_excluir_cupones_producto( $post_id ){

$current_disabled = isset( $_POST['_disabled_for_coupons'] ) ? 'yes' : 'no';

$disabled_products = get_option( '_products_disabled_for_coupons' );
if( empty($disabled_products) ) {
if( $current_disabled == 'yes' )
$disabled_products = array( $post_id );
} else {
if( $current_disabled == 'yes' ) {
$disabled_products[] = $post_id;
$disabled_products = array_unique( $disabled_products );
} else {
if ( ( $key = array_search( $post_id, $disabled_products ) ) !== false )
unset( $disabled_products[$key] );
}
}

update_post_meta( $post_id, '_disabled_for_coupons', $current_disabled );
update_option( '_products_disabled_for_coupons', $disabled_products );
}

// Hacer que los cupones no sean válidos a nivel de producto
add_filter('woocommerce_coupon_is_valid_for_product', 'set_coupon_validity_for_excluded_products', 12, 4);
function set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values ){
if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $valid;

$disabled_products = get_option( '_products_disabled_for_coupons' );
if( in_array( $product->get_id(), $disabled_products ) )
$valid = false;

return $valid;
}

// Poner a cero el importe del descuento del producto para que el resto de productos si se descuenten
add_filter( 'woocommerce_coupon_get_discount_amount', 'zero_discount_for_excluded_products', 12, 5 );
function zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon ){
if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $discount;

$disabled_products = get_option( '_products_disabled_for_coupons' );
if( in_array( $cart_item['product_id'], $disabled_products ) )
$discount = 0;

return $discount;
}

Recordad que solo excluimos ese producto. Si en el carrito hay otros dos productos sin marcar ese campo, en esos dos si se aplicará el descuento.

excluir cupones personalizado woocommerce

Mediante plugin: WooCommerce Coupon Restrictions

Si queremos restringir el uso de otras formas como por:

  • Nuevo cliente
  • Clientes registrados
  • Roles de usuario
  • Países
  • Códigos postales
  • Ciudades

Todo esto nos lo permite este plugin, es de pago. Disponible en este enlace. Se nos añadirán varios campos en los cupones de WooCommerce para conseguir esto. Tanto en restricciones de uso:

Como límites de uso:

excluir cupones por pais woocommerce

Estas serían todas las restricciones que podemos hacer sin problemas en WooCommerce. Cualquier duda como siempre os leo en comentarios.

Otros tutoriales relacionados:

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
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 *