Hola, tengo una regla en el plugin quantity rules que el pedido mínimo es 0.30 e incremento en 0.10 pero al elegir una variación woocemerce machaca la regla y se pone en minimo 1, como puedo solucionarlo?, gracias
Tela Vichy 3 mm | Cuadros Clásicos Colores - Mercería Ninot
Contenido solo visible a usuarios registrados
buenas, necesitaría el código personalizado funcionando solo en variaciones de categoria telas, y si no puede ser que salga 0.30 por defecto que aunque el valor por defecto sea 1 que solo deje bajar hasta 0.30. Pero bueno si no estáis autorizados no pasa nada ):, me falta probar los plugins, era la ultima opción ya que con el plugin actual tengo varias configuraciones. Gracias por el directorio de colaboradores.
Buenas, tengo este código pero solo me funciona en un producto
add_filter('woocommerce_available_variation', function( $data, $variation, $product ) {
// Solo si es producto variable en la categoría "telas"
$parent = wc_get_product($product->get_parent_id());
if ( $parent && $parent->is_type('variable') && has_term('telas', 'product_cat', $parent->get_id()) ) {
$data['min_qty'] = 0.30; // mínimo para la variación
}
return $data;
}, 10, 3);
add_filter('woocommerce_quantity_input_args', function($args, $product) {
// Solo aplicamos a variaciones de telas
if ( $product->is_type('variation') ) {
$parent = wc_get_product($product->get_parent_id());
if ( $parent && $parent->is_type('variable') && has_term('telas', 'product_cat', $parent->get_id()) ) {
$args['min_value'] = 0.30; // mínimo
$args['step'] = 0.10; // paso decimal
$args['input_value'] = max($args['input_value'], 0.30); // valor inicial mínimo
}
}
return $args;
}, 10, 2);
Tela Vichy Cuadros 1 Cm - Mercería Ninot
Hola Pedro,
Veo que has tomado la ruta de seguir probando códigos personalizados.
Considerando el fragmento que no dejas podria sugerir los siguientes ajustes para probar su funcionamiento
function ninot_es_tela( $product_id ) {
$terms = get_the_terms( $product_id, 'product_cat' );
if ( ! $terms || is_wp_error( $terms ) ) {
return false;
}
foreach ( $terms as $term ) {
if ( $term->slug === 'telas' ) {
return true;
}
foreach ( get_ancestors( $term->term_id, 'product_cat' ) as $ancestor_id ) {
$ancestor = get_term( $ancestor_id, 'product_cat' );
if ( $ancestor && $ancestor->slug === 'telas' ) {
return true;
}
}
}
return false;
}
add_filter( 'woocommerce_available_variation', function( $data, $product, $variation ) {
if ( ninot_es_tela( $product->get_id() ) ) {
$data['min_qty'] = 0.30;
$data['step'] = 0.10;
$data['input_value'] = 0.30;
}
return $data;
}, 10, 3 );
add_filter( 'woocommerce_quantity_input_args', function( $args, $product ) {
if ( ! $product->is_type( 'variation' ) ) {
return $args;
}
$parent = wc_get_product( $product->get_parent_id() );
if ( $parent && ninot_es_tela( $parent->get_id() ) ) {
$args['min_value'] = 0.30;
$args['step'] = 0.10;
$args['input_value'] = 0.30;
}
return $args;
}, 10, 2 );
add_filter( 'woocommerce_add_to_cart_validation', function( $passed, $product_id, $quantity, $variation_id = 0 ) {
if ( ! $variation_id ) {
return $passed;
}
$variation = wc_get_product( $variation_id );
if ( ! $variation ) {
return $passed;
}
$parent = wc_get_product( $variation->get_parent_id() );
if ( $parent && ninot_es_tela( $parent->get_id() ) && $quantity < 0.30 ) {
wc_add_notice( 'La cantidad mínima para telas es 0.30 metros.', 'error' );
return false;
}
return $passed;
}, 10, 4 );
Saludos!
Buenas, muchas gracias, creo que lo hemos conseguido, en los que he probado funciona. Solo me queda abrir un tema para modificar el ancho del desplegable de la hamburguesa y dejarlo como el vuestro del foro y intentaré no molestar en meses, que soy muy pesado. un saludo, soy geniales.
Que tal Pedro,
Excelentes noticias, siempre es un gusto poder ayudarte
No te preocupes; el propósito de este espacio es poder ayudar en lo posible a consultas como las tuyas
Quedamos atentos cualquier cosa
Saludos!