I have this code that adds input quantity value on the archive (shop) page.
// For implementation instructions see: https://aceplugins.com/how-to-add-a-code-snippet/
/**
* Add quantity field on the shop page.
*/
function ace_shop_page_add_quantity_field() {
/** @var WC_Product $product */
$product = wc_get_product( get_the_ID() );
if ( ! $product->is_sold_individually() && variable != $product->get_type() && $product->is_purchasable() ) {
woocommerce_quantity_input( array( min_value => 1, max_value => $product->backorders_allowed() ? : $product->get_stock_quantity() ) );
}
}
add_action( woocommerce_after_shop_loop_item , ace_shop_page_add_quantity_field , 8 );
/**
* Add required JavaScript.
*/
function ace_shop_page_quantity_add_to_cart_handler() {
wc_enqueue_js(
$(".woocommerce .products").on("click", ".quantity input", function() {
return false;
});
$(".woocommerce .products").on("change input", ".quantity .qty", function() {
var add_to_cart_button = $(this).parents( ".product" ).find(".add_to_cart_button");
// For AJAX add-to-cart actions
add_to_cart_button.data("quantity", $(this).val());
// For non-AJAX add-to-cart actions
add_to_cart_button.attr("href", "?add-to-cart=" + add_to_cart_button.attr("data-product_id") + "&quantity=" + $(this).val());
});
// Trigger on Enter press
$(".woocommerce .products").on("keypress", ".quantity .qty", function(e) {
if ((e.which||e.keyCode) === 13) {
$( this ).parents(".product").find(".add_to_cart_button").trigger("click");
}
});
);
}
add_action( init , ace_shop_page_quantity_add_to_cart_handler );
i Also have this code that changes the min value from 1 to 250 if the category is 250 and step value s 250 instead of 1.
// Funktion som kollar om produkterna har en aktiv kategori vid namn 250, om produkten/produkterna har det så sätt minsta order-antal till 250, varje steg (antal produkter du vill öka att lägga till) till 250.
add_filter("woocommerce_quantity_input_args", function($args, $product){
if(has_term("250", "product_cat", $product->get_id())) {
$args[ min_value ] = 250;
$args[ step ] = 250;
}
return $args;
}, 10, 2);
When i add more than one prodcut to the cart the value is correct 250x2 = 500 BUT when i add 250x1 to the cart the value goes back to 1 and not 250.
On the single page product page it works fine no matter if you add one or 1000..