{"id":350505,"date":"2026-08-10T09:45:18","date_gmt":"2026-08-10T09:45:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/quantity-rules-for-woocommerce\/"},"modified":"2026-08-10T09:45:06","modified_gmt":"2026-08-10T09:45:06","slug":"dreamfox-purchase-limits-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/mlt.wordpress.org\/plugins\/dreamfox-purchase-limits-for-woocommerce\/","author":12721565,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"DreamFox Purchase Limits for WooCommerce","header_author":"DreamFox Media","header_description":"Enforce minimum, maximum and step (increment) purchase quantities per product, variation, category or storewide, plus cart-total item-count and order-amount limits. Clear, customizable notices at every step.","assets_banners_color":"","last_updated":"2026-08-10 09:45:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/dreamfoxmedia.com\/","header_author_uri":"https:\/\/dreamfoxmedia.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":21,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"dreamfox","date":"2026-08-10 09:45:06"}},"upgrade_notice":{"1.0.5":"<p>Fixes the plugin&#039;s text domain to match its WordPress.org slug so translations work; no functional changes.<\/p>","1.0.4":"<p>Plugin renamed to DreamFox Purchase Limits for WooCommerce; no functional changes.<\/p>","1.0.3":"<p>Redesigned settings screen with tabs; no changes to how rules are enforced.<\/p>","1.0.2":"<p>Plugin renamed to Quantity Rules for WooCommerce; no functional changes.<\/p>","1.0.1":"<p>Minor fixes for WordPress.org plugin review compliance; no functional changes.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Storewide defaults, cart limits and role exemptions.","2":"Per-product min\/max\/step on the Inventory tab.","3":"Per-variation limits.","4":"Per-category limits on the category screen.","5":"A clear notice shown when a quantity is invalid."}},"plugin_section":[],"plugin_tags":[257881,177616,33628,249823,286],"plugin_category":[45],"plugin_contributors":[82375],"plugin_business_model":[],"class_list":["post-350505","plugin","type-plugin","status-publish","hentry","plugin_tags-min-max-quantity","plugin_tags-minimum-order-quantity","plugin_tags-quantity-limits","plugin_tags-step-quantity","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dreamfox","plugin_committers-dreamfox"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/dreamfox-purchase-limits-for-woocommerce.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>DreamFox Purchase Limits for WooCommerce<\/strong> gives you full control over how many units customers can buy. Enforce a minimum order quantity, cap the maximum, force sales in fixed increments (packs of 6, 12, \u2026), and set minimum\/maximum limits on the whole cart \u2014 item count and order amount alike.<\/p>\n\n<p>Every rule is enforced on the product page quantity stepper, at add-to-cart, on the cart page and again at checkout, with clear, fully customizable notices so customers always know what to do.<\/p>\n\n<h4>Free features<\/h4>\n\n<ul>\n<li><strong>Minimum quantity<\/strong> \u2013 require customers to buy at least a set number of units, per product.<\/li>\n<li><strong>Maximum quantity<\/strong> \u2013 cap how many units of a product can be purchased.<\/li>\n<li><strong>Step \/ increment rules<\/strong> \u2013 force purchases in multiples (packs of 6, 12, or any custom step).<\/li>\n<li><strong>Per-variation rules<\/strong> \u2013 set independent min\/max\/step on each variation of a variable product.<\/li>\n<li><strong>Per-category rules<\/strong> \u2013 apply limits to a whole product category, with the most restrictive rule winning.<\/li>\n<li><strong>Per-tag rules<\/strong> \u2013 apply limits to a whole product tag, with the most restrictive rule winning.<\/li>\n<li><strong>Amount (spend) limits<\/strong> \u2013 set a minimum\/maximum line total (price \u00d7 quantity) per product, variation, category or tag.<\/li>\n<li><strong>Storewide defaults<\/strong> \u2013 one min\/max\/step and min\/max amount applied to every product unless overridden.<\/li>\n<li><strong>Cart item-count limits<\/strong> \u2013 require a minimum or enforce a maximum number of items per order.<\/li>\n<li><strong>Cart order-amount limits<\/strong> \u2013 set a minimum or maximum order subtotal before checkout.<\/li>\n<li><strong>Cart distinct-product limits<\/strong> \u2013 require a minimum or cap the maximum number of different products per order.<\/li>\n<li><strong>Category cart totals<\/strong> \u2013 require a minimum or cap the maximum combined quantity, amount and number of different products of a whole category in the cart.<\/li>\n<li><strong>Role-based rules<\/strong> \u2013 override the storewide defaults and cart limits per user role (wholesale, VIP, members \u2026); the most restrictive of a user's roles applies.<\/li>\n<li><strong>Minimum after discount<\/strong> \u2013 optionally check order-amount limits against the discounted total instead of the subtotal.<\/li>\n<li><strong>Exclude individual products<\/strong> \u2013 flag a product (gift cards, samples, \u2026) to ignore every limit, including category, tag and storewide rules.<\/li>\n<li><strong>Disable rules per category or tag<\/strong> \u2013 flag a category or tag so its products ignore all limits.<\/li>\n<li><strong>Product-page hint<\/strong> \u2013 optionally show the minimum, maximum and step on the product page so customers see the rule before they hit an error.<\/li>\n<li><strong>Smart quantity stepper<\/strong> \u2013 the product and cart quantity inputs respect the min, max and step automatically.<\/li>\n<li><strong>Cart-aware validation<\/strong> \u2013 limits account for what a customer already has in the cart.<\/li>\n<li><strong>Role exemptions<\/strong> \u2013 let chosen roles (e.g. wholesale buyers) bypass all limits.<\/li>\n<li><strong>Customizable notices<\/strong> \u2013 rewrite every message with placeholders like {product}, {min}, {max}, {step}, {qty} and {amount}.<\/li>\n<li><strong>Priority resolution<\/strong> \u2013 variation \u2192 product \u2192 category \u2192 tag \u2192 storewide default, so the most specific rule always wins.<\/li>\n<li><strong>HPOS compatible<\/strong> \u2013 declares full High-Performance Order Storage support.<\/li>\n<li><strong>Translation ready<\/strong> \u2013 all strings are localizable.<\/li>\n<\/ul>\n\n<h4>Rule priority<\/h4>\n\n<p>For any product the effective limit is resolved in this order, most specific first:<\/p>\n\n<ol>\n<li>Variation<\/li>\n<li>Product<\/li>\n<li>Category (most restrictive when a product is in several)<\/li>\n<li>Tag (most restrictive when a product has several)<\/li>\n<li>Storewide default<\/li>\n<\/ol>\n\n<p>A product flagged as excluded skips all of the above and has no limits.<\/p>\n\n<p>Built by <a href=\"https:\/\/dreamfoxmedia.com\">DreamFox Media<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/dreamfox-purchase-limits-for-woocommerce<\/code>, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Quantity Rules<\/strong> to set storewide defaults, cart limits and messages.<\/li>\n<li>Optionally set per-product limits on the product <strong>Inventory<\/strong> tab, per-variation limits on each variation, or per-category and per-tag limits on the category\/tag edit screens.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20force%20customers%20to%20buy%20in%20packs%20of%206%3F\"><h3>Can I force customers to buy in packs of 6?<\/h3><\/dt>\n<dd><p>Yes. Set the <strong>Step (increment)<\/strong> to 6 on the product (or storewide). Customers can then only buy 6, 12, 18, and so on. Combine it with a minimum for a starting pack size.<\/p><\/dd>\n<dt id=\"which%20rule%20wins%20if%20a%20product%20has%20both%20product%20and%20category%20limits%3F\"><h3>Which rule wins if a product has both product and category limits?<\/h3><\/dt>\n<dd><p>The most specific rule wins: variation over product, product over category, category over tag, and tag over the storewide default. Each of minimum, maximum and step is resolved independently.<\/p><\/dd>\n<dt id=\"can%20i%20set%20limits%20on%20a%20product%20tag%3F\"><h3>Can I set limits on a product tag?<\/h3><\/dt>\n<dd><p>Yes. Edit any product tag (Products \u2192 Tags) and set its minimum, maximum and step, just like categories. Category rules take priority over tag rules when both apply.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20a%20specific%20product%20from%20having%20any%20limit%3F\"><h3>How do I stop a specific product from having any limit?<\/h3><\/dt>\n<dd><p>Open the product, go to the <strong>Inventory<\/strong> tab and tick <strong>Exclude from limits<\/strong>. That product will ignore every rule \u2014 product, category, tag and storewide. You can also disable rules for a whole category or tag from its edit screen.<\/p><\/dd>\n<dt id=\"can%20i%20limit%20spend%20rather%20than%20quantity%3F\"><h3>Can I limit spend rather than quantity?<\/h3><\/dt>\n<dd><p>Yes. Every level (product, variation, category, tag and storewide) supports a minimum and maximum <strong>line amount<\/strong> (price \u00d7 quantity), alongside the quantity rules.<\/p><\/dd>\n<dt id=\"can%20i%20require%20a%20minimum%20quantity%20or%20spend%20for%20a%20whole%20category%20across%20the%20cart%3F\"><h3>Can I require a minimum quantity or spend for a whole category across the cart?<\/h3><\/dt>\n<dd><p>Yes. Edit a product category and set its <strong>Cart minimum\/maximum quantity<\/strong> and <strong>Cart minimum\/maximum amount<\/strong>. The plugin sums every item from that category in the cart and enforces the limits at checkout.<\/p><\/dd>\n<dt id=\"can%20i%20limit%20how%20many%20different%20products%20are%20in%20an%20order%3F\"><h3>Can I limit how many different products are in an order?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>WooCommerce \u2192 Quantity Rules \u2192 Cart limits<\/strong> set a minimum and\/or maximum number of distinct products, either storewide or per category.<\/p><\/dd>\n<dt id=\"can%20i%20set%20different%20limits%20for%20wholesale%20or%20vip%20customers%3F\"><h3>Can I set different limits for wholesale or VIP customers?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>WooCommerce \u2192 Quantity Rules \u2192 Role-based rules<\/strong> you can override the storewide defaults and cart limits for any user role. When a customer has several roles, the most restrictive rule applies. You can also fully exempt a role from all limits.<\/p><\/dd>\n<dt id=\"can%20the%20order-amount%20limit%20use%20the%20price%20after%20discounts%3F\"><h3>Can the order-amount limit use the price after discounts?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Order amount basis \u2192 after discounts<\/strong> in the Cart limits section to check the minimum\/maximum order amount against the discounted total rather than the subtotal.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20product%20is%20in%20several%20categories%20with%20different%20limits%3F\"><h3>What happens when a product is in several categories with different limits?<\/h3><\/dt>\n<dd><p>The most restrictive category rule is used: the highest minimum, the lowest maximum and the largest step.<\/p><\/dd>\n<dt id=\"can%20some%20customers%20bypass%20the%20limits%3F\"><h3>Can some customers bypass the limits?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>WooCommerce \u2192 Quantity Rules \u2192 Role exemptions<\/strong> you can let specific roles (such as wholesale buyers) purchase any quantity.<\/p><\/dd>\n<dt id=\"are%20the%20limits%20enforced%20at%20checkout%3F\"><h3>Are the limits enforced at checkout?<\/h3><\/dt>\n<dd><p>Yes. Rules are checked on the product page, at add-to-cart, on the cart page and again during the checkout validation step, so invalid quantities can never slip through.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Is the plugin compatible with HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes, the plugin declares full HPOS compatibility.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fix: text domain now matches the plugin's registered WordPress.org slug (dreamfox-purchase-limits-for-woocommerce), per plugin review feedback \u2014 translations load correctly again. Display name is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Renamed to DreamFox Purchase Limits for WooCommerce (was Quantity Rules for WooCommerce), per WordPress.org plugin review feedback on name distinctiveness.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Redesigned the settings screen with a tabbed layout (Information, Storewide Defaults, Cart Limits, Role Rules, Display, Notice Messages) and a proper Information tab.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Renamed to Quantity Rules for WooCommerce (was Min &amp; Max Quantities for WooCommerce).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: shortened the plugin's short description to meet WordPress.org's length limit.<\/li>\n<li>Fix: prefixed global-scope variables in the multisite uninstall routine.<\/li>\n<li>Fix: hardened the bundled CLI test scripts against direct web access.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Set minimum, maximum and step purchase quantities per product, variation, category or storewide, plus cart item and order limits.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350505"}],"author":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dreamfox"}],"wp:attachment":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350505"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350505"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350505"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350505"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350505"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}