Setting Minimum Checkout Requirements in WooCommerce
Chances are that you want to set some kind of minimum requirements on your WooCommerce store before your customers checkout. What follows is a guide on how to set these requirements and restrictions, without needing to use any plugins at all:
- Setting A Minimum Weight Requirement Per Order
- Setting A Minimum Number Of Products Required Per Order
- Setting A Minimum Quantity Per Product
- Setting A Minimum Dollar Amount Per Order
Key Takeaways
- Setting minimum requirements in WooCommerce can be achieved without the use of plugins, allowing for better control and customization of the checkout process. This includes setting a minimum weight requirement per order, a minimum number of products required per order, a minimum quantity per product, and a minimum dollar amount per order.
- The process involves using the ‘woocommerce_check_cart_items’ action provided by WooCommerce to run functions and execute code. This code should be placed in the theme’s functions.php file and is compatible with the latest versions of WordPress and WooCommerce.
- Specific WooCommerce functions can be used to set minimum requirements such as weight, product count, product quantity, and total cart value. Each requirement comes with its own function that checks the cart items and compares them to the set minimum requirement, displaying an error message if the requirement is not met.
- WooCommerce also provides the flexibility to set minimum and maximum quantities for specific products or categories, display quantity requirements on the product page, and update product stock programmatically. These can be achieved through built-in functions or plugins like ‘WooCommerce Min/Max Quantities’ and ‘WooCommerce Quantity Increment’.
Methods Used In This Article
There is always more than one way of setting minimum requirements in WooCommerce; the results might even be identical. But I consider the methods described below to be the right (or better) way of doing it. Any suggestions on how you accomplish these tasks or further improvements are always welcome and received well.
The following code has been tested in the latest versions available for WordPress (3.9.1) and WooCommerce (2.1.12). We’ll be using the dummy data provided for WooCommerce when you install the plugin. The code should go in your theme’s functions.php file and is heavily commented so it’s easier to follow and/or modify if needed.
We are going to be using the woocommerce_check_cart_items action provided by WooCommerce to run our functions and execute our code. Visit the following link for a complete list of WooCommerce actions and filters, also known as hooks.
Setting A Minimum Weight Requirement Per Order

It is often useful to restrict your customer(s) from completing the checkout process without having met a minimum weight requirement. Minium weight requirements can help make your shipping costs more manageable, and the shipping process more streamlined. Don’t forget to change the minimum weight requirement to whatever works best for you, and keep in mind that weight is calculated in whatever weight unit you have set under WooCommerce -> Settings -> Products.
<span>// Set a minimum weight requirement before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_weight_requirements' ); </span><span>function spyr_set_weight_requirements() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set the minimum weight before checking out </span> <span>$minimum_weight = 25; </span> <span>// Get the Cart's content total weight </span> <span>$cart_contents_weight = WC()->cart->cart_contents_weight; </span> <span>// Compare values and add an error is Cart's total weight </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum Weight of 25kg is required before checking out. (Cont. below) </span> <span>// Current cart weight: 12.5kg </span> <span>if( $cart_contents_weight < $minimum_weight ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf('<strong>A Minimum Weight of %s%s is required before checking out.</strong>' </span> <span>. '<br />Current cart weight: %s%s', </span> <span>$minimum_weight, </span> <span>get_option( 'woocommerce_weight_unit' ), </span> <span>$cart_contents_weight, </span> <span>get_option( 'woocommerce_weight_unit' ), </span> <span>get_permalink( wc_get_page_id( 'shop' ) ) </span> <span>), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Setting A Minimum Number Of Products Required Per Order

Another valid scenario is setting a minimum number of products that have to be ordered at a time before allowing the customer to fully pay for his order and shipped. Change ’20’ to whatever works best for your needs. As in the previous example, you want to make sure that you only run this code on the cart and checkout pages. This is we use is_cart() and is_checkout(), which return ‘true’ whenever we are on those two specific pages. Learn more about WooCommerce conditionals Tags.
<span>// Set a minimum number of products requirement before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_num_products' ); </span><span>function spyr_set_min_num_products() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set the minimum number of products before checking out </span> <span>$minimum_num_products = 20; </span> <span>// Get the Cart's total number of products </span> <span>$cart_num_products = WC()->cart->cart_contents_count; </span> <span>// Compare values and add an error is Cart's total number of products </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum of 20 products is required before checking out. (Cont. below) </span> <span>// Current number of items in the cart: 6 </span> <span>if( $cart_num_products < $minimum_num_products ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf( '<strong>A Minimum of %s products is required before checking out.</strong>' </span> <span>. '<br />Current number of items in the cart: %s.', </span> <span>$minimum_num_products, </span> <span>$cart_num_products ), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Setting A Minimum Quantity Per Product

Setting a minimum quantity per product is a common requirement for WooCommerce stores, specially if you are selling wholesale. Setting a minimum quantity will restrict your customer(s) from purchasing a specific product in lesser quantities. For us to check for the minimum quantities, we need to loop through every single product in the cart and check it against our minimum quantity per product requirements set in place.
To set these restrictions, you need to create an array which holds your rules/restrictions inside another array. Be careful when editing this array, and make sure that all code is entered accurately in order to prevent errors and unexpected results. The format you need to use is as follows:
<span>// Product Id and Min. Quantities per Product </span><span>// id = Product ID </span><span>// min = Minimum quantity </span><span>$product_min_qty = array( </span> <span>array( 'id' => 47, 'min' => 100 ), </span> <span>array( 'id' => 37, 'min' => 100 ), </span> <span>array( 'id' => 34, 'min' => 100 ), </span> <span>array( 'id' => 31, 'min' => 100 ), </span><span>);</span>
Here is where the magic happens.
<span>// Set minimum quantity per product before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_qty_per_product' ); </span><span>function spyr_set_min_qty_per_product() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Product Id and Min. Quantities per Product </span> <span>$product_min_qty = array( </span> <span>array( 'id' => 47, 'min' => 100 ), </span> <span>array( 'id' => 37, 'min' => 100 ), </span> <span>array( 'id' => 34, 'min' => 100 ), </span> <span>array( 'id' => 31, 'min' => 100 ), </span> <span>); </span> <span>// Will increment </span> <span>$i = 0; </span> <span>// Will hold information about products that have not </span> <span>// met the minimum order quantity </span> <span>$bad_products = array(); </span> <span>// Loop through the products in the Cart </span> <span>foreach( $woocommerce->cart->cart_contents as $product_in_cart ) { </span> <span>// Loop through our minimum order quantities per product </span> <span>foreach( $product_min_qty as $product_to_test ) { </span> <span>// If we can match the product ID to the ID set on the minimum required array </span> <span>if( $product_to_test['id'] == $product_in_cart['product_id'] ) { </span> <span>// If the quantity required is less than than the quantity in the cart now </span> <span>if( $product_in_cart['quantity'] < $product_to_test['min'] ) { </span> <span>// Get the product ID </span> <span>$bad_products[$i]['id'] = $product_in_cart['product_id']; </span> <span>// Get the Product quantity already in the cart for this product </span> <span>$bad_products[$i]['in_cart'] = $product_in_cart['quantity']; </span> <span>// Get the minimum required for this product </span> <span>$bad_products[$i]['min_req'] = $product_to_test['min']; </span> <span>} </span> <span>} </span> <span>} </span> <span>// Increment $i </span> <span>$i++; </span> <span>} </span> <span>// Time to build our error message to inform the customer </span> <span>// About the minimum quantity per order. </span> <span>if( is_array( $bad_products) && count( $bad_products ) > 1 ) { </span> <span>// Lets begin building our message </span> <span>$message = '<strong>A minimum quantity per product has not been met.</strong><br />'; </span> <span>foreach( $bad_products as $bad_product ) { </span> <span>// Append to the current message </span> <span>$message .= get_the_title( $bad_product['id'] ) .' requires a minimum quantity of ' </span> <span>. $bad_product['min_req'] </span> <span>.'. You currently have: '. $bad_product['in_cart'] .'.<br />'; </span> <span>} </span> <span>wc_add_notice( $message, 'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Setting A Minimum Dollar Amount Per Order

Last but not least, you may want to set a minimum dollar amount that must be spent before your customer is allowed to checkout. Please note that we are calculating the total value using the subtotal, before shipping and taxes are added to the final order total.
<span>// Set a minimum dollar amount per order </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' ); </span><span>function spyr_set_min_total() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set minimum cart total </span> <span>$minimum_cart_total = 10; </span> <span>// Total we are going to be using for the Math </span> <span>// This is before taxes and shipping charges </span> <span>$total = WC()->cart->subtotal; </span> <span>// Compare values and add an error is Cart's total </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum of 10 USD is required before checking out. (Cont. below) </span> <span>// Current cart total: 6 USD </span> <span>if( $total <= $minimum_cart_total ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf( '<strong>A Minimum of %s %s is required before checking out.</strong>' </span> <span>.'<br />Current cart\'s total: %s %s', </span> <span>$minimum_cart_total, </span> <span>get_option( 'woocommerce_currency'), </span> <span>$total, </span> <span>get_option( 'woocommerce_currency') ), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Conclusion
Are you can see, WooCommerce allows you to use actions and filters to change the normal checkout process. All stores are different and being able to set these restrictions when needed is crucial. For us developers, who need to accomplish tasks like these, knowing how to do it is vital.
Thanks for reading, comments or suggestions on how to improve the code are always welcome. If you have ideas for a specific WooCommerce modification, don’t be shy and post a link to it in the comments for discussion.
Frequently Asked Questions on Minimum Checkout Requirements in WooCommerce
How Can I Set a Minimum Quantity for a Specific Product in WooCommerce?
To set a minimum quantity for a specific product in WooCommerce, you need to navigate to the product data section of the product you want to set a minimum quantity for. Under the ‘Inventory’ tab, you will find an option to set the ‘Minimum Quantity’. Enter the desired number and save your changes. This will ensure that customers must purchase at least this quantity of the product to proceed with checkout.
Can I Set a Maximum Quantity for Products in WooCommerce?
Yes, you can set a maximum quantity for products in WooCommerce. Similar to setting a minimum quantity, you can do this from the product data section under the ‘Inventory’ tab. There, you will find an option to set the ‘Maximum Quantity’. Enter the desired number and save your changes. This will limit the number of each product a customer can purchase in a single order.
Is it Possible to Limit the Total Quantity of Products in a Single Order?
Yes, it is possible to limit the total quantity of products in a single order in WooCommerce. This can be done by using a plugin like ‘MinMax Quantity for WooCommerce’. Once installed and activated, you can set a minimum and maximum limit for the total quantity of products in a single order from the plugin’s settings.
How Can I Update Product Stock Programmatically in WooCommerce?
Updating product stock programmatically in WooCommerce can be done by using WooCommerce’s built-in functions. You can use the wc_update_product_stock() function to update the stock quantity of a product. This function takes two parameters: the product ID and the new stock quantity.
Can I Set a Minimum Order Amount in WooCommerce?
Yes, you can set a minimum order amount in WooCommerce. This can be done by using a plugin like ‘WooCommerce Min/Max Quantities’. Once installed and activated, you can set a minimum order amount from the plugin’s settings. This will require customers to reach this minimum order amount before they can proceed with checkout.
How Can I Set Quantity Increments for Products in WooCommerce?
Setting quantity increments for products in WooCommerce can be done by using a plugin like ‘WooCommerce Quantity Increment’. Once installed and activated, you can set quantity increments for each product from the product data section under the ‘Inventory’ tab.
Can I Set Different Minimum and Maximum Quantities for Different Products?
Yes, you can set different minimum and maximum quantities for different products in WooCommerce. This can be done from the product data section of each product. Under the ‘Inventory’ tab, you can set the ‘Minimum Quantity’ and ‘Maximum Quantity’ for each product individually.
Is it Possible to Set a Minimum and Maximum Quantity for Variations of a Product?
Yes, it is possible to set a minimum and maximum quantity for variations of a product in WooCommerce. This can be done from the variations section of the product data. For each variation, you can set a ‘Minimum Quantity’ and ‘Maximum Quantity’.
How Can I Display the Minimum and Maximum Quantity Requirements on the Product Page?
Displaying the minimum and maximum quantity requirements on the product page can be done by using a plugin like ‘WooCommerce Min/Max Quantities’. This plugin adds a notice on the product page displaying the minimum and maximum quantity requirements for the product.
Can I Set a Minimum and Maximum Quantity for Specific Categories of Products?
Yes, you can set a minimum and maximum quantity for specific categories of products in WooCommerce. This can be done by using a plugin like ‘WooCommerce Min/Max Quantities’. Once installed and activated, you can set minimum and maximum quantities for each product category from the plugin’s settings.
The above is the detailed content of Setting Minimum Checkout Requirements in WooCommerce. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Blogs are the ideal platform for people to express their opinions, opinions and opinions online. Many newbies are eager to build their own website but are hesitant to worry about technical barriers or cost issues. However, as the platform continues to evolve to meet the capabilities and needs of beginners, it is now starting to become easier than ever. This article will guide you step by step how to build a WordPress blog, from theme selection to using plugins to improve security and performance, helping you create your own website easily. Choose a blog topic and direction Before purchasing a domain name or registering a host, it is best to identify the topics you plan to cover. Personal websites can revolve around travel, cooking, product reviews, music or any hobby that sparks your interests. Focusing on areas you are truly interested in can encourage continuous writing

WordPress is easy for beginners to get started. 1. After logging into the background, the user interface is intuitive and the simple dashboard provides all the necessary function links. 2. Basic operations include creating and editing content. The WYSIWYG editor simplifies content creation. 3. Beginners can expand website functions through plug-ins and themes, and the learning curve exists but can be mastered through practice.

Do you want to know how to display child categories on the parent category archive page? When you customize a classification archive page, you may need to do this to make it more useful to your visitors. In this article, we will show you how to easily display child categories on the parent category archive page. Why do subcategories appear on parent category archive page? By displaying all child categories on the parent category archive page, you can make them less generic and more useful to visitors. For example, if you run a WordPress blog about books and have a taxonomy called "Theme", you can add sub-taxonomy such as "novel", "non-fiction" so that your readers can

Recently, we showed you how to create a personalized experience for users by allowing users to save their favorite posts in a personalized library. You can take personalized results to another level by using their names in some places (i.e., welcome screens). Fortunately, WordPress makes it very easy to get information about logged in users. In this article, we will show you how to retrieve information related to the currently logged in user. We will use the get_currentuserinfo(); function. This can be used anywhere in the theme (header, footer, sidebar, page template, etc.). In order for it to work, the user must be logged in. So we need to use

There are four ways to adjust the WordPress article list: use theme options, use plugins (such as Post Types Order, WP Post List, Boxy Stuff), use code (add settings in the functions.php file), or modify the WordPress database directly.

In the past, we have shared how to use the PostExpirator plugin to expire posts in WordPress. Well, when creating the activity list website, we found this plugin to be very useful. We can easily delete expired activity lists. Secondly, thanks to this plugin, it is also very easy to sort posts by post expiration date. In this article, we will show you how to sort posts by post expiration date in WordPress. Updated code to reflect changes in the plugin to change the custom field name. Thanks Tajim for letting us know in the comments. In our specific project, we use events as custom post types. Now

One of our users asked other websites how to display the number of queries and page loading time in the footer. You often see this in the footer of your website, and it may display something like: "64 queries in 1.248 seconds". In this article, we will show you how to display the number of queries and page loading time in WordPress. Just paste the following code anywhere you like in the theme file (e.g. footer.php). queriesin

Can learn WordPress within three days. 1. Master basic knowledge, such as themes, plug-ins, etc. 2. Understand the core functions, including installation and working principles. 3. Learn basic and advanced usage through examples. 4. Understand debugging techniques and performance optimization suggestions.
