Use decimal in quantity fields in WooCommerce – WordPress

As standard WooCommerce does not allow to use decimal values in the quantity field, so we can only add 1, 2, 3, ... and so on to the cart. We had a project, where we would change that, so we came up with a really simple fix.

The fix

In the functions.php theme file, we just added a few lines.

// Add min value to the quantity field (default = 1)
add_filter('woocommerce_quantity_input_min', 'min_decimal');
function min_decimal($val) {
	return 0.1;
}

// Add step value to the quantity field (default = 1)
add_filter('woocommerce_quantity_input_step', 'nsk_allow_decimal');
function nsk_allow_decimal($val) {
	return 0.1;
}

// Removes the WooCommerce filter, that is validating the quantity to be an int
remove_filter('woocommerce_stock_amount', 'intval');

// Add a filter, that validates the quantity to be a float
add_filter('woocommerce_stock_amount', 'floatval');

// Add unit price fix when showing the unit price on processed orders
add_filter('woocommerce_order_amount_item_total', 'unit_price_fix', 10, 5);
function unit_price_fix($price, $order, $item, $inc_tax = false, $round = true) {
	$qty = (!empty($item['qty']) && $item['qty'] != 0) ? $item['qty'] : 1;
	if($inc_tax) {
 		$price = ($item['line_total'] + $item['line_tax']) / $qty;
 	} else {
 		$price = $item['line_total'] / $qty;
	}
 	$price = $round ? round( $price, 2 ) : $price;
 	return $price;
}

This is a really simple solution.

Get it as plugin

We have created a plugin for WordPress and WooCommerce with this feature. With the plugin, you can control the quantity fields per product, per category or for the whole site.

Get the WooCommerce Advanced Quantity plugin on envato.

ms@morningtrain.dk'

Martin Schadegg Rasch Jensen