Ir al contenido
  • Blog
    • WooCommerce
    • Snippets para WooCommerce
    • Guías
    • Herramientas
    • eCommerce
    • SEO
    • WordPress
  • Cursos
  • Servicios
    • Tiendas online con WooCommerce
    • TPV físico para tu tienda
    • SEO para tiendas online
    • Publicidad en redes sociales
    • Desarrollo de páginas web
  • Sobre mí
  • Blog
    • WooCommerce
    • Snippets para WooCommerce
    • Guías
    • Herramientas
    • eCommerce
    • SEO
    • WordPress
  • Cursos
  • Servicios
    • Tiendas online con WooCommerce
    • TPV físico para tu tienda
    • SEO para tiendas online
    • Publicidad en redes sociales
    • Desarrollo de páginas web
  • Sobre mí
Buscar Contactar →

Snippets para Woocommerce

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

Por Diegol

Actualizado el 5 de septiembre de 2022·3 min de lectura

Aprende en YouTubeSuscríbete gratis al canalYouTubeSígueme en LinkedInConsejos de eCommerce
Opciones de lectura
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).

NewsletterLo mejor de WooCommerce, directo a tu emailTutoriales, snippets y estrategias para vender más con tu tienda online. Sin spam: te das de baja cuando quieras.
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)
Añade diegol.top como fuente preferida de Google.
Últimas noticias de actualidad para tu tienda online.
Add as preferred source on Google
Diegol
Escrito porDiegolEspecialista 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.topSobre míLinkedInYouTube
Newsletter¿Te ha sido útil? Recibe el próximo en tu emailTutoriales, snippets y estrategias para vender más con tu tienda online. Sin spam: te das de baja cuando quieras.

Deja una respuesta Cancelar la respuesta

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

6  +  4  =  

LucusHost, el mejor hosting

¿Hablamos de tu tienda online?

Cuéntame en qué punto está tu proyecto y te digo cómo puedo ayudarte a vender más con WooCommerce.

Pide tu consultoría →

Consultor eCommerce especializado en WooCommerce. Ayudo a tiendas online a crecer con tecnología, SEO y publicidad, y comparto lo que sé en el blog y en YouTube.

YouTube · LinkedIn · WordPress.tv

Servicios

  • Tiendas online con WooCommerce
  • TPV físico para tu tienda
  • SEO para tiendas online
  • Publicidad en redes sociales
  • Desarrollo de páginas web
  • Todos los servicios

Aprende conmigo

  • Blog
  • Snippets para WooCommerce
  • Guías
  • Cursos en YouTube
  • Sobre mí

Legal

  • Aviso legal
  • Política de privacidad
  • Política de cookies
  • Contactar

© 2026 Diego Nieto · Consultor eCommerce

Web alojada en LucusHost

Busca entre más de 300 tutoriales, guías y snippets de WooCommerce.