Algún plugin que permita lo siguiente:
Bloquear el carrito si la cantidad total no supera un determinado importe.
A tener en cuenta:
- Solo suma una categoría específica de productos.
- Hay diferentes importes mínimos por cada país/estado
Hola Manuel.
Tienes el siguiente plugin:
-> https://wordpress.org/plugins/min-and-max-purchase-for-woocommerce/
En su versión Free la configuración es global, es decir, afectaría a todos los productos, en la versión Pro si que tienes más opciones que te permiten configurar el pedido minimo por productos o categorias:
Otra opción sería con una función:
// Define una cantidad mínima por producto
add_action( 'woocommerce_check_cart_items', 'set_min_quantity_per_product' );
function set_min_quantity_per_product() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
$i = 0;
// Lista de ID de productos y su cantidad mínima correspondiente
$product_min_qty = array(
array( 'id' => 12, 'min' => 10 ),
array( 'id' => 7, 'min' => 5 )
);
// Array para guardar los productos del carrito que no cumplan la condición
$bad_products = array();
// Comprobamos el número de productos del carrito
foreach( $woocommerce->cart->cart_contents as $product_in_cart ) {
foreach( $product_min_qty as $product_to_test ) {
if( $product_to_test['id'] == $product_in_cart['product_id'] ) {
if( $product_in_cart['quantity'] < $product_to_test['min'] ) {
$bad_products[$i]['id'] = $product_in_cart['product_id'];
$bad_products[$i]['in_cart'] = $product_in_cart['quantity'];
$bad_products[$i]['min_req'] = $product_to_test['min'];
}
}
}
$i++;
}
// Crea el mensaje de error que se muestra cuando no se ha alcanzado el mínimo
if( is_array( $bad_products) && count( $bad_products ) >= 1 ) {
$message = 'Lo sentimos. Pero para finalizar su compra debe alcanzar un mínimo de productos.<br/>';
foreach( $bad_products as $bad_product ) {
$message .= 'El producto "'. get_the_title( $bad_product['id'] ) .'" requiere una cantidad mínima de '. $bad_product['min_req'] .' unidades'.'. Usted sólo ha incluido '. $bad_product['in_cart'] .'.';
}
wc_add_notice( $message, 'error' );
}
}
}
Del código tienes que modificar los array del id de producto por los ID de lso productos que quieres que se tomen en cuenta y las cantidades:
// Lista de ID de productos y su cantidad mínima correspondiente
$product_min_qty = array(
array( 'id' => 12, 'min' => 10 ),
array( 'id' => 7, 'min' => 5 )
);
Un saludo
Y el código o el plugin, a parte de para definir el pedido mínimo por categorías, serviría para definir el importe mínimo según el país de envío? Como se podría ajustar?
Hola Manuel.
El código sirve para definir un pedido mínimo por producto, puedes indicarle que el producto x tiene que tener tantos productos añadido para poder realizar su compra:
En el array del código tienes:
array( 'id' => 12, 'min' => 10 ),
'id' seria el id del producto
'min' serian las cantidades del producto añadir en a la cesta.
El problema estaría en los países que eso si que no lo tienen en cuenta.
En el plugin en al versión de pago si que puedes definir por categorías, lo que no se es si restringe por países, creo que no pero seria consultarlo con los desarrolladores, lo que si que puedes es crear una regla para usuarios es decir puedes tener roles de usuario que sea por países, por ejemplo creas un Rol de usuario que sea Francia y todos los usuarios de Francia asignarlos a ese grupo.
Para crear roles de usuario puedes utilizar el plugin User Role Editor
-> https://es.wordpress.org/plugins/user-role-editor/
Si que podrías establecer un importe mínimo pero sería global para todos los productos y países.
Un saludo
No estamos hablando de catidades de un producto, estamos hablando del importe total en el carrito de la suma de productos de una categoría concreta....
Hola Manuel,
Pruebes verificar si algunos de los siguiente complementos funcionan para lo que necesitas, no estoy muy segura si te permite restringir por país
-> https://es.wordpress.org/plugins/minimum-purchase-for-woocommerce/
-> https://wordpress.org/plugins/order-minimum-amount-for-woocommerce/
-> Contenido solo visible a usuarios registrados
Sin embargo tal vez lo que necesitas requiere desarrollo a la medida por lo que es posible que necesites adaptar tu código, te recomiendo consultes con nuestros colaboradores quienes puede ayudarte a desarrollar lo que necesitas -> https://www.webempresa.com/directorio-colaboradores.html
Un Saludo
Hola Manuel.
Co el plugin que te indique puedes crear reglas una de ellas por categorías, es decir puedes asignar un importe mínimo a una categoría pero como te indico el problema lo tendrías con los países que en un principio se podría asignar creando un regla por el grupo de usuarios.
Tienes documentación del plugin en este enlace:
-> https://www.varktech.com/woocommerce/min-and-max-purchase-for-woocommerce/?active_tab=tutorial
En el código que te pase puedes asignar por producto y productos añadidos pero no por categoría, puedes restringir por categorías pero no a un total seria por productos añadidos de la misma categoría:
// Permite sólo un producto (o un número predefinido de productos) por categoría en el carrito
add_filter( 'woocommerce_add_to_cart_validation', 'we_cantidad_permitida_por_categoria_en_carrito', 10, 2 );
function we_cantidad_permitida_por_categoria_en_carrito( $passed, $product_id) {
$max_num_products = 1;// cambia el número máximo de productos permitidos por categoría
$running_qty = 0;
$restricted_product_cats = array();
//Restringe a categoría o categorías particulares por slug
$restricted_product_cats[] = 'cat-slug-one';
//$restricted_product_cats[] = 'cat-slug-two';// descomenta para activar la restricción en una segunda categoría
// Obtiene el slug de la categoría de producto actual en un array
$product_cats_object = get_the_terms( $product_id, 'product_cat' );
foreach($product_cats_object as $obj_prod_cat) $current_product_cats[]=$obj_prod_cat->slug;
// Itera a través de cada artículo del carrito
foreach (WC()->cart->get_cart() as $cart_item_key=>$cart_item ){
// Restringe el $max_num_products de cada categoría
if( has_term( $current_product_cats, 'product_cat', $cart_item['product_id'] )) {
// Restringe el $max_num_products de categorías con productos restringidos
//if( array_intersect($restricted_product_cats, $current_product_cats) && has_term( $restricted_product_cats, 'product_cat', $cart_item['product_id'] )) {
// count(selected category) quantity
$running_qty += (int) $cart_item['quantity'];
// No se permiten más de los productos permitidos en el carrito
if( $running_qty >= $max_num_products ) {
wc_add_notice( sprintf( 'Sólo está permitido %s '.($max_num_products>1?'productos de esta categoría':'producto de esta categoría').' en el carrito.', $max_num_products ), 'error' );
$passed = false; // no agrega el nuevo producto al carrito
// Para el loop
break;
}
}
}
return $passed;
}
Solo tendrias que modificar $max_num_products = 1 por el número de productos que quieres que se pueda añadir y $restricted_product_cats[] = 'cat-slug-one'; por el slug de la categoría
Si necesitas algo más especial de todo lo que te hemos ofrecido, tendría que ser algo a medida pero creo que con el plugin puedes hacer lo que buscas.
Puedes probar la versión Free y te haces una idea , alguna de las opciones estan bloqueadas pero te puedes hacer una idea de las posibilidades que tiene en su versión pro.
Un saludo
Creando los roles se añaden los usuarios de un idioma concreto al grupo de usuarios?
El problema con esto es que quiero limitar el precio por la dirección de envío, y puede que así un usuario de francia pueda enviar a alemania con un precio que no le corresponde.
Hola Manuel.
Creando los roles se añaden los usuarios de un idioma concreto al grupo de usuarios?
Si te refieres a si es automático, no.
Una vez registrados tendrías que acceder al usuario y asignarlo al rol de cada país, es decir, tendrías que crear roles por países y una vez que se registre el cliente hay que acceder a ese usuario y asignarlo al rol de su país.
Un saludo
Hola Manuel.
Pues no hay más es todo lo que te podemos ofrecer, lo siguiente sería realizar un plugin a medida que se adapte a lo que necesitas, par eso ya tienes que contactar con algún colaborador:
-> https://www.webempresa.com/directorio-colaboradores.html
Un saludo