Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

125
Views
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 ); }
about 4 years ago · Santiago Trujillo
1 answers
Answer question

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.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!