Permitir sólo comprar un producto una vez por cliente en WooCommerce

LucusHost, el mejor hosting

Bloquear compras o establecer un mínimo de compra es algo habitual en algunas tiendas online. De todas las variantes que hay, vamos a bloquear la compra de un producto a los clientes que ya lo hayan adquirido.

Es decir, si un cliente ha comprado ya el producto X y no queremos que lo vuelva a adquirir, lo podemos bloquear con lo que os voy a explicar en este tutorial.

Lo primero que tenemos que hacer es que los usuarios para comprar tengan que registrarse sí o sí, porque si no no podremos saber quién a comprado y quién no. Para esto nos vamos a WooCommerce > Ajustes > Cuentas y privacidad y en la sección Pago como invitado desmarcamos las dos opciones( Permite a los clientes hacer pedidos sin tener una cuenta).

obligatorio registro para comprar woocommerce

Con esto, hemos conseguido que cada compra que se realice en la web vaya asociada a un usuario. Ahora ya podemos añadir un código para bloquear la compra repetida de un producto en nuestra tienda online con WooCommerce.

Añadimos este código en el functions.php de nuestro Child Theme o bien en nuestro plugin de funcionalidades como explico aquí. Este código es si quieres limitarlo a un o algunos productos en concreto:

add_filter( 'woocommerce_variation_is_purchasable', 'solo_comprar_un_producto', 10, 2 );
add_filter( 'woocommerce_is_purchasable', 'solo_comprar_un_producto', 10, 2 );
function solo_comprar_un_producto( $purchasable, $product ) {
    // Aqui se establecen los ID de los productos en la matriz que se pueden comprar sólo una vez, si es mas de uno separa con comas 
    $targeted_products = array(**PON AQUI EL ID ENTRE LOS PARENTESIS, QUITA LAS ESTRELLAS**);

    // SOlo para usuarios registrados y no para productos variables
    if( ! is_user_logged_in() || $product->is_type('variable') )
        return $purchasable; 

    $user = wp_get_current_user(); 

    if ( in_array( $product->get_id(), $targeted_products ) &&
    wc_customer_bought_product( $user->user_email, $user->ID, $product->get_id() ) ) {
        $purchasable = false;
    }

    return $purchasable;
}

Con esto no saldrá el botón de añadir al carrito y no podrá comprarlo:

Permiti solo comprar un producto una vez por cliente en Woocommerce

Luego podríamos bloquear cualquier compra repetida de productos, independientemente del producto que sea. Sería un ajuste para toda la tienda:

function dl_desactivar_compra_repetida_global( $purchasable, $product ) {
    if ( $product->is_type( 'variable' ) ) {
        return $purchasable;
    }

    $product_id = $product->is_type( 'variation' ) ? $product->variation_id : $product->id; 

    if ( wc_customer_bought_product( wp_get_current_user()->user_email, get_current_user_id(), $product_id ) ) {
        $purchasable = false;
    }

    if ( $purchasable && $product->is_type( 'variation' ) ) {
        $purchasable = $product->parent->is_purchasable();
    }

    return $purchasable;
}
add_filter( 'woocommerce_is_purchasable', 'dl_desactivar_compra_repetida_global', 10, 2 );

Espero que os haya servido este tutorial. Recordad que si queréis tener este tipo de cambios y actualizaciones seguras en la web, podéis revisar mi servicio de mantenimiento WooCommerce.

¡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 *