Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
Una compra permitida por semana en Woocommerce

Estoy creando un sitio web de comercio electrónico. ¿Qué puedo agregar al archivo functions.php de mi tema para permitir que un cliente compre solo un producto de la tienda y luego deshabilite cualquier otra compra durante 1 semana?

El cliente puede comprar cualquier producto, pero después de la compra, no se pueden realizar más compras de ningún tipo durante una semana. El cliente puede realizar cualquier otra compra después de una semana solamente.

Solo pude deshabilitar las compras realizadas para un producto usando este código:

 add_filter( 'woocommerce_add_cart_item_data', 'woo_allow_one_item_only' ); function woo_allow_one_item_only( $cart_item_data ) { global $woocommerce; $woocommerce->cart->empty_cart(); // Do nothing with the data and return return $cart_item_data; } $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => wc_get_order_types(), 'post_status' => array( 'wc-pending', 'wc-processing', 'wc-on-hold', 'wc-completed' ), ) ); // Order count $order_count = 1; if ( count( $customer_orders ) >= $order_count ) { add_filter( 'woocommerce_is_purchasable', false ); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Actualización de julio de 2018 : código de versión más ligero y efectivo mejorado

  • Validación simplificada de productos añadidos al carrito
  • Una forma mejor y mucho más liviana de verificar si el usuario ha comprado en la semana pasada (incrustado en una función condicional reutilizable) .
  • Se agregó carrito y validación de pago.

El siguiente código permitirá al cliente agregar solo un artículo al carrito y permitirá solo una compra por semana , mostrando avisos de error cuando sea necesario, evitando compras prohibidas.

El código:

 // Utility conditional function (Check if user has purchased in the passed week) function has_week_purshases( $user_id = 0 ){ global $wpdb; $customer_id = $user_id > 0 ? $user_id : get_current_user_id(); $count = $wpdb->get_var( " SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts as p INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id WHERE p.post_type LIKE 'shop_order' AND pm.meta_key LIKE '_customer_user' AND pm.meta_value = $customer_id AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400 * 7)) " ); return $count > 0 ? true : false; } // product add to cart validation add_filter( 'woocommerce_add_to_cart_validation', 'conditionally_allowing_product_added_to_cart', 10, 3 ); function conditionally_allowing_product_added_to_cart( $passed, $product_id, $quantity) { // If cart is not empty, customer will not be allowed and a notice will be displayed if ( ! WC()->cart->is_empty() ){ // Display an error notice if there is already an item in cart wc_add_notice( __("You can only add an item to cart"), 'error' ); $passed = false; // Not Allowed } elseif ( is_user_logged_in() && has_week_purshases() ) { // Display an error notice when customer is not allowed yet wc_add_notice( __("You are not allowed yet to add any product in cart"), 'error' ); $passed = false; // Not Allowed } return $passed; } // Cart and checkout validation add_action( 'woocommerce_check_cart_items', 'conditionally_allowing_checkout' ); add_action( 'woocommerce_checkout_process', 'conditionally_allowing_checkout' ); function conditionally_allowing_checkout() { if ( sizeof(WC()->cart->get_cart()) > 1 ) { // Display an error notice if there is more than 1 item in cart wc_add_notice( _("You can only have only one item in cart"), 'error' ); } elseif ( is_user_logged_in() && has_week_purshases() ) { // Display an error notice when customer is not allowed yet wc_add_notice( __("You are not allowed yet to make purchases"), 'error' ); } }

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda