Sale! Tested Updated Trending Bestseller High rating Documented

Maximum Products per User for WooCommerce

(21 customer reviews)

From: $49.99 / year

Limit the number of items your WooCommerce customers can buy (lifetime or in selected date range).

$49.99 Single site1 year of updates and support30-day money-back guaranteeBuy
$129.99 Unlimited sites1 year of updates and support30-day money-back guaranteeBuy
Clear

With “Maximum Products per User for WooCommerce” plugin you can limit the number of items your WooCommerce customers can buy. Item limits for user can be set on lifetime basis or in selected date range (i.e. not per order). Limits can be set for all products at once, on per product basis, per product category or per product tag. You can choose if you want to limit product quantities, prices (i.e. sums) or weights.

Main Features

  • Set maximum products number per user.
  • Select plugin mode: product quantities, product orders, product prices (including or excluding taxes), product weights, or product volumes.
  • Set date range (for example: lifetime, this month, this year, last 30 days, last 365 days or custom date range).
  • Set on which order statuses product data should be updated.
  • Set different maximum product limits for different user roles.
  • Enable variable products variations usage.
  • Customize customer message on frontend.
  • Block checkout page on exceeded limits.
  • Exclude products from plugin scope.
  • Edit and export each user’s sales data.
  • Choose which payment gateways should update product data.
  • Display remaining amount, maximum limits, etc. to the users in cart, checkout, single product page, on “My account” page, or with a shortcode anywhere on your site.
  • Identify guests by IP address or block guests from buying products in your shop.
  • Hide products with exceeded limits for the current user.
  • Enable multi-language support (WPML, Polylang).
  • Set product limits per product category.
  • Set product limits per product tag.
  • Set product limits per individual product.
  • Set product limits by formula, for example: per user ID, per membership plan, per payment method, etc.
  • And more…
While data is recalculated automatically (but only after the plugin was enabled), you can also force manual recalculation by running Recalculate sales data tool. This is useful on initial plugin install (i.e. to calculate sales data from before the plugin was enabled).

Options

Plugin settings are located in “WooCommerce > Settings > Maximum Products per User”.

General Options

General settings are located in “WooCommerce > Settings > Maximum Products per User > General”.

Maximum Products per User for WooCommerce - General Options

Mode
You will need to Recalculate sales data after changing the “Mode” option. Possible values: Product quantities; Product orders; Product prices (incl. tax); Product prices (excl. tax); Product weights; Product volumes.
Default: Product quantities
Date range
Possible values: Lifetime; This hour; This day; This week; This month; This year; Last hour; Last 24 hours; Last 7 days; Last 30 days; Last 365 days; Custom.
Default: Lifetime
Custom date range
Used when “Custom” option is selected in “Date range”.
Default: 3600
Custom date range unit
Used for the “Custom date range” option. Possible values: seconds; minutes; hours; days; weeks.
Default: seconds
Order statuses
Choose order statuses when product data should be updated. If you select multiple order statuses, data is updated only once, on whichever status change occurs first. You will need to Recalculate sales data after changing the “Order statuses” option.
Default: Completed
Order statuses: Delete
Choose order statuses when product data should be deleted. If you select multiple order statuses, data is deleted only once, on whichever status change occurs first.
Default: None
Payment gateways
Choose payment gateways when product data should be updated. Leave empty to update data for all payment gateways. You will need to Recalculate sales data after changing “Payment gateways” option.
Default: None
Use variations
Use variations in “All products” and “Per product” calculations. If “Limits > Per Product” section is enabled, you will be able to (optionally) override this option for each individual product.
Default: no
User roles
Set different maximum product limits for different user roles.
Default: no
User roles: Enabled user roles
Select user roles for which you want to set different limits. If empty, then all user roles will be added to the settings.
Default: None
Hide products
Hides products with exceeded limits for the current user from the catalog and search results. Products will still be accessible via the direct links.
Default: no
Guests
Sets how non-logged users (i.e. guests) should be handled by the plugin. Possible values: Do nothing; Block guests from buying products in your shop; Identify guests by IP address.
Default: Do nothing
Block guests: Message
For the “Block guests from buying products in your shop” option. You can use HTML and/or shortcode here. E.g.: [alg_wc_mppu_translate].
Default:
You need to register to buy products.
Multi-language
Use the default language product/term ID instead of the translated one. You will need to Recalculate sales data after changing “Multi-language” option. Possible values: Disabled; WPML; Polylang.
Default: Disabled
Count by current payment method
Count “user already bought” data for current (i.e. chosen) payment method only. You may also want to disable “Validate on add to cart” and “Block checkout page” options in the “Frontend” section, so your customer could change the payment method on exceeded limits.
Default: no

Frontend Options

Frontend settings are located in “WooCommerce > Settings > Maximum Products per User > Frontend”.

Maximum Products per User for WooCommerce - Frontend Options

Placeholders

You can use this placeholders in messages:

  • %limit%,
  • %bought%,
  • %remaining%,
  • %in_cart%,
  • %bought_plus_in_cart%,
  • %remaining_minus_in_cart%,
  • %adding%,
  • %in_cart_plus_adding%,
  • %bought_plus_in_cart_plus_adding%,
  • %remaining_minus_in_cart_minus_adding%,
  • %product_title%,
  • %term_name%,
  • %first_order_amount%,
  • %first_order_date%,
  • %first_order_date_exp%,
  • %first_order_date_exp_timeleft%,
  • %payment_method_title%.

You can also use HTML and/or shortcodes in messages, e.g.: [alg_wc_mppu_translate] for WPML/Polylang translations.

Validate on add to cart
Enable this if you want to check user limits right away, on add to cart button click, instead of notice on cart and checkout pages only.
Default: yes
Cart notice
Shows notice on the cart page. Possible values: Disable; Enable; As text.
Default: Enable
Cart notice type
Ignored unless “Cart notice” option is set to “Enable”. Possible values: Notice; Error; Success.
Default: Notice
Customer message
Check the Placeholders section for available message placeholders.
Default:
You can only buy maximum %limit% of %product_title% (you've already bought %bought%).
Multiple notices
Choose if you want to display cart & checkout notices for each product, or only for the first product.
Default: yes
Block checkout page
This will stop customer from accessing the checkout page on exceeded limits. Customer will be redirected to the cart page.
Default: no
Single product page
Adds current product limit info to the single product pages. Possible values: Disable; Notice; Text in product summary; Text in product description.
Default: Disable
Single product page: Content
Check the Placeholders section for available message placeholders.
Default:
The remaining amount for %product_title% is %remaining% (you've already bought %bought% out of %limit%).
My Account
Adds tab to the “My Account” page.
Default: no
My Account: Tab id
Sets tab id (i.e. slug).
Default: product-limits
My Account: Tab title
Sets tab title.
Default: Product limits
My Account: Tab icon
You need to enter icon code here, e.g. f2b9. Icon codes are available on Font Awesome site. Will use the default icon if empty.
Default: None
My Account: Tab content
You can use HTML and/or shortcodes here. E.g.: [alg_wc_mppu_translate].
Default:
[alg_wc_mppu_user_product_limits]
Maximum Products per User for WooCommerce - My Account
Frontend “My Account” tab example.

All Products

Maximum Products per User for WooCommerce - Limits - All Products
Limits for all products (with “User roles” option enabled).
All products
Enables “All products” section.
Default: no
Limit per user
Maximum allowed each product’s limit per user.
Default: 1

Per Product Taxonomy

Maximum Products per User for WooCommerce - Per Product Taxonomy Options

Per product tag
This will add new meta box to each product tag term’s edit page.
Default: no
Per product category
This will add new meta box to each product category term’s edit page.
Default: no

When section is enabled, you will see new “Limit per user” option in “Products > Categories > Your category > Edit” and/or “Products > Tags > Your tag > Edit”:

Maximum Products per User for WooCommerce - Per Product Taxonomy Options - Meta Box
Limits for product category (with “User roles” option enabled).

Per Product

Maximum Products per User for WooCommerce - Per Product Options

Per product
Enables “Per product” section. This will add new meta box to each product’s edit page.
Default: no

Per product meta box for variable product with “Use variations” option enabled:

Maximum Products per User for WooCommerce - Per Product Meta Box - Variations

Per product meta box for simple product or for variable product with “Use variations” option disabled:

Maximum Products per User for WooCommerce - Per Product Meta Box - Simple

Per product meta box with User roles option enabled:

Maximum Products per User for WooCommerce - Per Product Options - User Roles

Limits by Formula

This section introduces an alternative method for setting max limits.

Maximum Products per User for WooCommerce - Limits by Formula

Enable
Enables/disables “Limits by Formula” section.
Default: no
Formula
One shortcode per line.
Default: None

Notes

  • You need to use [alg_wc_mppu] shortcode here.
  • One shortcode per line.
  • Algorithm stops when first matching shortcode is found (from top to bottom).
  • Available shortcode attributes: user_id, user_role, membership_plan, payment_method, product_id, term_id, product_sku, is_downloadable, is_virtual, limit.
  • limit attribute is required.
  • You need to enable “Per Product” checkbox in “Limits” section to use product_id, product_sku, is_downloadable, is_virtual attributes.
  • You need to enable “Per product category” and/or “Per product tag” checkbox in “Limits” section to use term_id attribute.
  • You need to enable “Count by current payment method” checkbox in “General” section to use payment_method attribute. You may also want to disable “Validate on add to cart” and “Block checkout page” options in the “Frontend” section, so your customer could change the payment method on exceeded limits.
  • You can not use product_id (or product_sku / is_downloadable / is_virtual) and term_id simultaneously in one shortcode.
  • You can set shortcode effective date(s) with start_date, end_date (and not_date_limit) attributes.

Formula Examples

Set maximum quantity to 18 for users 2 and 5:

[alg_wc_mppu limit="18" user_id="2,5"]

Set maximum quantity to 18 for products 100 and 110 for users 2 and 5:

[alg_wc_mppu limit="18" user_id="2,5" product_id="100,110"]

Limits by user’s membership plan (you need to use membership plan slug in shortcode):

[alg_wc_mppu limit="3" membership_plan="silver"]
[alg_wc_mppu limit="36" membership_plan="gold"]

Limits by current payment gateway (you need to use payment gateway slug in shortcode):

[alg_wc_mppu limit="100" payment_method="cheque"]
[alg_wc_mppu limit="200" payment_method="bacs,paypal"]
[alg_wc_mppu limit="300" payment_method="cod"]

Admin Options

Maximum Products per User for WooCommerce - Admin Options

Editable sales data - Enable
You will be able to edit each user’s sales data on user’s edit page (in “Users”).
Default: no
Editable sales data - Add empty items
Adds “Lifetime” column for products/terms with no sales data.
Default: no
Export
Column separator for the export tools.
Default: ,
Export: Merge user
This will output all user’s data in a single line. Used in “Export sales data for all users” tool.
Default: no
Export: Merge user: Data separator
Ignored unless “Merge user” option is enabled.
Default: ;
Export: Merge user: Extra meta
Set as comma separated values. Ignored unless “Merge user” option is enabled.
Default: None

Tools

Check the box and save settings to run the tool. Please note that there is no undo for this action.

Maximum Products per User for WooCommerce - Tools

Recalculate sales data
Default: no
Delete & recalculate sales data
Default: no
Delete sales data
Default: no

Tools: Advanced Options

Advanced options for both recalculation tools. Leave the default values if not sure.

Orders date range
Possible values: All orders; Only orders in “General > Date range”.
Default: All orders
Query block size
How many orders to process in a single query.
Default: 1024
Time limit
The maximum execution time, in seconds. If set to zero, no time limit is forced. If set to minus one, server time limit is used.
Default: -1
Loop function
Possible values: WordPress standard (WP_Query); WooCommerce specific (wc_get_orders).
Default: WordPress standard (WP_Query)
Debug
Default: no

Advanced Options

Maximum Products per User for WooCommerce - Advanced Options

Time function
Possible values: Coordinated Universal Time (UTC); Local (WordPress) time.
Default: Local (WordPress) time
Exclude products
You will need to “Recalculate sales data” for products to be excluded from sales data.
Default: None
Duplicate product
Enable this if you want to copy plugin’s product meta data on product “Duplicate”.
Default: no
Lifetime from totals
Ignored unless “Date range” is set to “Lifetime” in “General” section. Enabling this may make “user already bought” data calculations faster, however, it will also disable some functionality, like “Count by current payment method” option in “General” section.
Default: no

Sales Data

You can check saved sales data for each product, by opening admin product’s edit page. For variable products you will see data for each variation as well. Similar “Sales Data” tables can be found on each category/tag edit pages:

Maximum Products per User for WooCommerce - Product Sales Data

Shortcodes

Available shortcodes:

  • [alg_wc_mppu_current_product_limit]
  • [alg_wc_mppu_user_product_limits]
  • [alg_wc_mppu_term_limit]
  • [alg_wc_mppu_translate]
  • [alg_wc_mppu]

[alg_wc_mppu_current_product_limit]

Displays current product data for the current user, for example, maximum limit, amount already bought, remaining amount etc.

product_id
(optional) Product ID. If not set, will use current product ID.
Default: None
user_id
(optional) User ID. If not set, will use current user ID.
Default: None
template
(optional) Output template. If not set, will use “WooCommerce > Settings > Maximum Products per User > Frontend > Single product page” option value. Available placeholders: %limit%, %bought%, %remaining%, %product_title%.
Default: None
Example
[alg_wc_mppu_current_product_limit template="The remaining amount for %product_title% is %remaining% (you've already bought %bought% out of %limit%)."]

[alg_wc_mppu_user_product_limits]

Displays all products data for the current user. Outputted as a table with “Product”, “Remaining”, “Bought” and “Max” columns.

user_id
(optional) User ID. If not set, will use current user ID.
Default: None
Example
[alg_wc_mppu_user_product_limits]

[alg_wc_mppu_term_limit]

Displays amounts data for the term, i.e. product category or tag.

Example
[alg_wc_mppu_term_limit taxonomy="product_cat" term_slug="t-shirts"]
[alg_wc_mppu_term_limit taxonomy="product_cat" term_id="33"]

[alg_wc_mppu_translate]

Can be used in plugin options for WPML/Polylang translations.

Example
[alg_wc_mppu_translate lang="DE" lang_text="Message in German" not_lang_text="Message for all other languages"]
[alg_wc_mppu_translate lang="DE"]Message in German[/alg_wc_mppu_translate][alg_wc_mppu_translate not_lang="DE"]Message for all other languages[/alg_wc_mppu_translate]

[alg_wc_mppu]

Can be used only in “WooCommerce > Settings > Maximum Products per User > Formula” section.

Q. I'm seeing No data yet text in "Maximum Products per User: Sales Data" meta box.

A. While data is recalculated automatically (but only after the plugin was enabled), you can force manual recalculation with Recalculate sales data option in the "Tools" section (in "WooCommerce > Settings > Maximum Products per User > Tools"). This is useful on initial plugin install (i.e. to calculate sales data from before the plugin was enabled). Please note that by default product quantities are updated when order status is changed to Completed.


Q. I've configured the plugin, but my customers can still finish the order with an exceeded quantities.

A. Please check what order statuses are set to be counted in "WooCommerce > Settings > Maximum Products per User > Order statuses". By default it's set to "Completed" orders only. Don't forget to "Recalculate sales data" after changing the "Order statuses" option. If that is not the case - there is "Editable sales data" option in "WooCommerce > Settings > Maximum Products per User > Admin". If you enable it and then go to some user's profile page (i.e. in "Users" menu), you will be able to see which products did this user buy - that may help to understand what's going on.


Q. My customers can reach the checkout page with an exceeded quantities (they are correctly not allowed to finish the order though).

A. Please make sure that "Block checkout page" option in checked in "WooCommerce > Settings > Maximum Products per User > Frontend".


Q. Can I limit the total number of products, i.e. set maximum limit for total number of products instead of per product.

A. Yes, this can be done, however, you'll need to assign all your products to some category or tag. After that you need to enable "Per product category" (or "Per product tag") option in "WooCommerce > Settings > Maximum Products per User > Limits", and then set "Limit per user" option for that category (or tag) (in "Products > Categories > Your category > Edit") to the total number of products you need.

21 reviews for Maximum Products per User for WooCommerce

  1. Christian (verified owner)

    Unbelievable support! thanks a lot!!

    • WPFactory Plugins

      😉

  2. Dipixel (verified owner)

    fast and effective

    • WPFactory Plugins

      Thanks 😉

  3. Dani

    I have to say that support was top notch. And for some things that I was just too blind to see. Instead sending me to the documentation page to figure it out for myself or ignore the email altogether, they replied, told me how to do it directly.

    When I couldn’t figure it out and seriously needed up, they were right there as well to go in and fix my site.

    On top of the support the support, the plug-in is amazing. The amount of control you have of how, when, where, who can purchase and not purchase products is amazing.

    Five stars across the board!

    • WPFactory Plugins

      😉

  4. Jean-Francois Tellier (verified owner)

    I tested the free plugin, and I got an error, but the support has been fantastic! The offered me a patch that solved my problem. And they delivered a Pro version the day after with the patch included. Great works!

    • WPFactory Plugins

      Thanks 🙂

  5. Philipp R. (verified owner)

    We’ve been using this plugin for more than two years now and it is doing a great job! And thumbs up for the really fast support crew!

    • WPFactory Plugins

      😉

  6. Elaine Paxson (verified owner)

    This plugin does exactly what we need it to do. Support from Moshtafizur has been fantastic – helpful, detailed and friendly. Awesome.

    • WPFactory Plugins

      Thanks Elaine 🙂

  7. Julian Stysis (verified owner)

    Great plugin, superb support!
    Excellent plugin and does exactly what I need it to do.
    The support has been phenomenal. They not only promptly fixed a couple of bugs I identified, but extended their product twice to include my feature requests. Will buy from them again and again!

    • WPFactory Plugins

      Thanks Julian 🙂

  8. sawadeeamulet (verified owner)

    great and nice , 10/10
    trust me guys, this the best plugin and best support that you all searching for.

    i been tried for AxxxP , Wxxxx , Mxxxx plugin , none of these better than wpfactory.

    • WPFactory Plugins

      Thanks 🙂

  9. veronica

    Should be able to Search Support Thread to help find already answered configuration questions.

    Our store has 1000’s of free downloadable products and you cant limit the product allowed amount for all categories in the store.

    Cant exclude a full category from the plugin also.

    • WPFactory Plugins

      Hi Veronica,

      You can find already answered questions using the Support, FAQ and Developers tab. You can simply scroll the page or find any text with your browser.

      You can assign all your products to a tag or category, and then you can limit the allowed amount for that tag.

      It’s not possible to exclude a category for now. You can however use the same approach above we’ve suggested. Assign all products to a tag and then set the products that should have a different limit to another tag, and then set up only that tag.

      Let me know if you need more help.

  10. Anthony Mixides (verified owner)

    very simple plugin to setup and get working as we expected. thank you!

    • WPFactory Plugins

      😉

  11. Diego (verified owner)

    Excellent, the support is the best. Super fast to solve problems or help you in whatever you need. Definitely a worthwhile subscription. They are always pending

  12. Tommaso (verified owner)

    This plugin is fantastic, simple, light, compatible with all my other plugins (80 installed), and effective.
    Perfect if you sell services and to limit problems related to order duplicaitons
    Support Is brilliant and fast.
    Strongly advised!

    • Tom Anbinder

      Thank you!

  13. Ulf Tellstad (verified owner)

    Great plugin and very helpful support!

    The plugin works, and when I wanted a feature that dident exist (different date ranges) the author worked it out.

    • Tom Anbinder

      Thank you!

  14. han van (verified owner)

    a perfectly functioning plugin, but then we want something else, we always do 🙂 and Tom fixes it for you. amazing support!

  15. Chuck Varabioff (verified owner)

    Amazing product, it is exactly what I was looking for. Very simple installation and configuration. Customer service is also lightning fast 🙂

  16. Dino

    I always value a plugin not only by its features, but by its support. Tom has been fantastic at helping me get this plugin adapted to the specifics of my stores needs. I have tried another plugin prior and honestly their support is the worst. I will always pay more for a plugin/app/software if the reviews have killer support so I know Tom and this plugin deserved it. Not to mention the plugin itself is feature rich. Thanks Tom 🙂

  17. Parm Gill (verified owner)

    Amazing support!

  18. Badr (verified owner)

    Great product, great customer support.

  19. gabriel_cc (verified owner)

    The plugin works great and the support is excellent, fast and comunicative.
    Very happy with the purchase!

  20. marco (verified owner)

    Excellent support from the team. Works as expected, and 1 on 1 support from the developer too. Thank you very much.

  21. Adam

    Simply perfect!

Add a review

Your email address will not be published. Required fields are marked *

Free vs Pro

This plugin is a premium version of free "Maximum Products per User for WooCommerce" plugin.

Free VersionPro Version
Mode (i.e. product quantities, prices, weights, etc.)
Date range
Order statuses
Payment gateways
Use variations
User roles
Validate on add to cart
Customer message
Block checkout page
Permanent notice
My Account
Editable sales data
Tools
Exclude products
All products
Per product category
Per product tag
Per individual product
By formula (e.g. per user ID; per membership plan etc.)

alg_wc_mppu_date_to_check filter

You can set custom date range with "Date range" option in "General" plugin settings, however, if you need start date to be dynamic, i.e. to depend on some variable params, you can use alg_wc_mppu_date_to_check filter. Please note that if you are using the "Lifetime" date range, then "Advanced > Lifetime from totals" option must be disabled for this filter to be applied. Date must be returned as a timestamp.

Example #1

Let's say, you want to limit max quantity based on user's membership plan. In this case, you would set "Formula" to something like this:

[alg_wc_mppu limit="3" membership_plan="silver"]
[alg_wc_mppu limit="36" membership_plan="gold"]

Now let's say, you want "silver" users to buy max 3 products per month, while "gold" users should be able to purchase max 36 products per year. In this case, you would need to set "Date range" option to "Last 365 days" (i.e. for "gold" members) and modify date range for "silver" members with the filter:

add_filter( 'alg_wc_mppu_date_to_check', 'my_alg_wc_mppu_date_to_check', 10, 3 );
if ( ! function_exists( 'my_alg_wc_mppu_date_to_check' ) ) {
    /**
     * Sets "date to check" for "silver" membership to "last 30 days".
     */
    function my_alg_wc_mppu_date_to_check( $date_to_check, $date_range, $current_time ) {
        return ( wc_memberships_is_user_active_member( get_current_user_id(), 'silver' ) ? ( $current_time - MONTH_IN_SECONDS ) : $date_to_check );
    }
}

Example #2

Let's say, you want start date to be equal to user's membership subscription start date:

add_filter( 'alg_wc_mppu_date_to_check', 'my_alg_wc_mppu_date_to_check', 10, 3 );
if ( ! function_exists( 'my_alg_wc_mppu_date_to_check' ) ) {
    /**
     * Maximum Products per User: Sets "date to check" to current user's membership start date.
     */
    function my_alg_wc_mppu_date_to_check( $date_to_check, $date_range, $current_time ) {
        foreach ( wc_memberships_get_membership_plans() as $membership_plan_id => $membership_plan ) {
            if ( wc_memberships_is_user_active_member( get_current_user_id(), $membership_plan_id ) ) {
                $user_membership = wc_memberships()->get_user_memberships_instance()->get_user_membership( get_current_user_id(), $membership_plan_id );
                $date_to_check   = get_post_modified_time( 'U', false, $user_membership->post );
                if ( ! $date_to_check ) {
                    $date_to_check = $user_membership->get_start_date( 'timestamp' ); // Fallback
                }
                return $date_to_check;
            }
        }
        return $date_to_check;
    }
}

Example #3

If you wanted to use a fixed date range, similar to the "Lifetime" option but using a specific date, this is how you could do it:

add_filter( 'alg_wc_mppu_date_to_check', function ( $date_to_check, $date_range, $current_time, $product_or_term_id, $current_user_id, $is_product ) {
    return strtotime( '2021-05-01' );
}, 10, 6 );

Example #4

Setting different date ranges per product, considering the products A, B and C with ids 1, 2 and 3:

add_filter( 'alg_wc_mppu_date_to_check', function ( $date_to_check, $date_range, $current_time, $product_or_term_id, $current_user_id, $is_product ) {
	if ( ! $is_product ) {
		return $date_to_check;
	}
	switch ( (int) $product_or_term_id ) {
		case 1: // Product A - Lifetime.
			$date_to_check = 0;
			break;
		case 2: // Product B - Last 7 days.
			$date_to_check = ( $current_time - WEEK_IN_SECONDS );
			break;
		case 3: //  Product C - Last 24 hours.
			$date_to_check = ( $current_time - DAY_IN_SECONDS );
			break;
	}
	return $date_to_check;
}, 10, 6 );

Example #5

How is it possible to have a formula which allows different Date Ranges per Product Tag?

a) Customers need to be able to purchase only 5 items per month (this month, not last 30 days) from Product Tag A with an ID of 574.
b) Customers need be able to purchase only 1 item per lifetime from Product Tag B with an id of 600.

- Enable "Limits > Per product tag"
- Enable "Formula > Limits by formula"
- Add this to formula:

[alg_wc_mppu term_id="574" limit="5"]
[alg_wc_mppu term_id="600" limit="1"]

- Add this to your functions.php

add_filter( 'alg_wc_mppu_date_to_check', function ( $date_to_check, $date_range, $current_time, $product_or_term_id, $current_user_id, $is_product ) {
   if ( $is_product ) {
      return $date_to_check;
   }
   if ( in_array( $product_or_term_id, array( 574 ) ) ) {
      $date_to_check = strtotime( date( 'Y-m-01' ), $current_time );
   } elseif ( in_array( $product_or_term_id, array( 600 ) ) ) {
      $date_to_check = 0;
   }
   return $date_to_check;
}, 10, 6 );

Changelog

3.8.5 - 15/03/2023

  • Dev - General - New option: Set a maximum value for the the product quantity field based on its current limit.
  • WC tested up to: 7.5.

3.8.4 - 28/02/2023

  • Dev - Frontend - My account tab - Improve performance with pagination and by improving the show_unbought parameter as false.
  • Dev - Frontend - My account tab - Remove output cache.
  • Dev - General - Date range - New option: Monthly.
  • WC tested up to: 7.4.

3.8.3 – 02/02/2023

  • Dev – Frontend – My account tab – Improve cache from [alg_wc_mppu_user_product_limits].

3.8.2 - 31/01/2023

  • Dev - Frontend - My account tab - Cache the output from [alg_wc_mppu_user_product_limits].
  • Dev - New action hooks: alg_wc_mppu_order_data_saved.
  • WC tested up to: 7.3.

3.8.1 - 28/12/2022

  • Dev - Admin - Editable sales data - New option: Automatically update lifetime column from orders column.
  • Dev - Admin - Editable sales data - New option: Automatically calculate terms data from products data.
  • WC tested up to: 7.2.

3.8.0 - 30/11/2022

  • Dev - General - Date range - New option: Fixed date.
  • WC tested up to: 7.1.

3.7.9 - 07/11/2022

  • Fix - Attribute user_id from [alg_wc_mppu_current_product_limit] shortcode is not working.
  • Fix - Undefined array key term_id on class-alg-wc-mppu-pro.php.
  • Tested up to: 6.1.

3.7.8 - 28/10/2022

  • Dev - Admin - Editable sales data - New option: Show variations even if Use Variations option is disabled.
  • Fix - Formula - Product id overwrites term id.
  • Fix - Formula - Empty formula generates errors.

3.7.7 - 25/10/2022

  • Fix - Formula - Improve is_downloadable and is_virtual checks.
  • Fix duplicated action links.
  • WC tested up to: 7.0.

3.7.6 - 03/10/2022

  • Fix - General - Multi-language - My account tab is empty on other languages.
  • Fix - General - Date range is not working consistently with some options using "This".
  • WC tested up to: 6.9.

3.7.5 - 06/09/2022

  • Dev - Improve error message by showing a more relevant product title, including variation names.

3.7.4 - 05/09/2022

  • Fix - Frontend - My account tab - Fix my account tab permalink on plugin activation.
  • Fix - Shortcodes - Shortcode [alg_wc_mppu_current_product_limit] possibly triggers error on admin.

3.7.3 - 25/08/2022

  • Fix - Shortcodes - Shortcode [alg_wc_mppu_current_product_limit] triggers error on admin.

3.7.2 - 24/08/2022

  • Dev - Improve compatibility with previous WooCommerce versions.

3.7.1 - 22/08/2022

  • Fix - Frontend - Improve show_unbought parameter performance from [alg_wc_mppu_user_product_limits] shortcode when used as false.

3.7.0 - 16/08/2022

  • Dev - Formula - Add limit_type attribute to [alg_wc_mppu] shortcode. Allowed values: grouped, individual. Default: individual. It has to be used with multiple term ids or product ids. Example: [alg_wc_mppu limit="5" limit_type="grouped" term_id="77,96"].
  • Dev - Advanced - Create "Time offset" option as a way to compensate the time calculated by alg_wc_mppu_date_to_check filter.
  • WC tested up to: 6.8.

3.6.9 - 02/08/2022

  • Fix - Frontend - Shortcode [alg_wc_mppu_user_product_limits] won't show "remain" and "bought" columns.
  • Fix - Possible PHP error: "Uncaught TypeError: Unsupported operand types: int + string".
  • Dev - Compatibility - WPC Composite Products - Add option to change add to cart button text from blocked guest user products.

3.6.8 - 21/07/2022

  • Dev - Formula - Add swpm_membership_id param to [alg_wc_mppu] shortcode, adding compatibility to the WordPress Membership Plugin.
  • Dev - Shortcodes - Add bought_value parameter to [alg_wc_mppu_user_product_limits] shortcode. Possible values: smart, per_product. Default value set as smart.
  • Dev - Shortcodes - Add show_unbought parameter to [alg_wc_mppu_user_product_limits] shortcode. Default is true.
  • Dev - Shortcodes - Add show_unbought parameter to [alg_wc_mppu_user_terms_limits] shortcode. Default is true.
  • Dev - Shortcodes - Add alg_wc_mppu_user_product_limits_item_validation filter to [alg_wc_mppu_user_product_limits] shortcode.
  • Dev - Shortcodes - Add alg_wc_mppu_user_terms_limits_item_validation filter to [alg_wc_mppu_user_terms_limits] shortcode.
  • Dev - Guests - Hide products - Improve hiding.
  • WC tested up to: 6.7.

3.6.7 - 11/07/2022

  • Fix - Frontend - Product limit message - PHP Warning is displayed for guests.
  • Fix - General - Hide products - Products do not get hidden from search results.
  • Dev - Guests - Hide products - Hide on search results.
  • Dev - Move guest options to a new section.

3.6.6 - 17/06/2022

  • Fix - Shortcodes - Change [alg_wc_mppu_current_product_limit] shortcode param from 'template' to 'msg_template'.
  • Fix - Shortcodes - Check if product id matches a real product.
  • Dev - Shortcodes - Add condition to alg_wc_mppu_current_product_limit shortcode. Default is empty. Example: %remaining% == 0.
  • Dev - Frontend - Product limit message - Add "condition" option allowing to specify a condition to display the message.
  • Dev - Formula - Add sumo_membership_plan param to [alg_wc_mppu] shortcode.
  • WC tested up to: 6.6.

3.6.5 - 02/06/2022

  • Fix - General - Multilanguage - Limit checking - Product name gets translated to original language on notices.
  • Fix - General - Multilanguage - Polylang option returns null or empty when there is no viable translated option.
  • Dev - Formula - Add memberpress_plan_id param to [alg_wc_mppu] shortcode.
  • WC tested up to: 6.5.
  • Tested up to: 6.0.

3.6.4 - 06/05/2022

  • Dev - Tools - Improve delete_meta_data() function.
  • Dev - Tools - Advanced - Create option to delete sales data using async request.
  • Dev - Tools - Debug - Show task time in seconds.
  • Dev - Tools - Recalculate sales in background processing.
  • Dev - Advanced - Background Processing - Add "Minimum amount" option.
  • Dev - Advanced - Background Processing - Add "Send email" option.
  • Dev - Advanced - Background Processing - Add "Email to" option.

3.6.3 - 15/04/2022

  • Fix - Formula - Validate is_product boolean param from [alg_wc_mppu_user_bought] shortcode.
  • Dev - Formula - Add return param to [alg_wc_mppu_user_bought] shortcode. Possible values: amount_bought, boolean.
  • Dev - Formula - Allow fixed Y-m-d date on date_range parameter from [alg_wc_mppu_user_bought] shortcode.
  • Dev - Allow Alg_WC_MPPU_Core::get_date_to_check() to check for a fixed Y-m-d date.
  • Dev - WC tested up to: 6.4.

3.6.2 - 30/03/2022

  • Fix - "Product orders" does not calculate sales data right when using per category or tag.
  • Fix - "Product orders" mode doesn't allow to add the same product cart on add to cart validation.
  • Fix - Frontend - Product limit message - Notice gets displayed empty sometimes.
  • Fix - Unsupported operand types: string - int.
  • Fix - Check status on order creation and not only on status transition.
  • Dev - Add alg_wc_mppu_validate_on_add_to_cart_quantity_do_add filter.
  • Dev - Add alg_wc_mppu_totals_data_increase_qty filter.
  • Dev - Add alg_wc_mppu_totals_data_decrease_qty filter.
  • Dev - Add alg_wc_mppu_totals_data filter.
  • Dev - Add alg_wc_mppu_orders_data_increase_qty filter.

3.6.1 - 13/03/2022

  • Dev - Notices about limits will be displayed as soon as users get to checkout page using the hook woocommerce_before_checkout_form.
  • Dev - General - Orders above limits - Add option to allow users to place orders with exceeding limits.
  • Dev - General - Orders above limits - Add option to change status from newly placed orders above limits.
  • Dev - General - Orders above limits - Add option to change the custom status label from newly placed orders above limits.
  • Dev - Add alg_wc_mppu_output_notices_args filter.
  • WC tested up to: 6.3.
  • Tested up to: 5.9.

3.6.0 - 19/01/2022

  • Dev - Compatibility - Point of Sale for WooCommerce - Add option to check limits when creating orders via registers.
  • Dev - Add compatibility section.
  • WC tested up to: 6.1.

3.5.9 - 10/11/2021

  • Dev - Get product id from default language on max_qty_by_formula() function.
  • Dev - Create hide_products_by_id param for the [alg_wc_mppu_user_product_limits] shortcode allowing to hide the products from the list.
  • WC tested up to: 5.9.

3.5.8 - 07/10/2021

  • Fix - Remove unnecessary folder.

3.5.7 - 04/10/2021

  • Dev - Create alg_wc_mppu_user_terms_limits shortcode with taxonomy parameter that can be set as product_cat or product_tag.
  • Dev - Improve is_plugin_active() function.
  • Fix - Frontend - %first_order_date_exp_timeleft% is not returning the correct time left for expiring.
  • Improve readme.
  • WC tested up to: 5.7.

3.5.6 - 29/07/2021

  • Dev - General - Multi-language - Add option to use product ID from default language when checking product limits.
  • Dev - Add github deploy setup.
  • Dev - Use wpf-promoting-notice library to add notice on settings page regarding pro version.
  • Dev - Free and pro plugins can't be active at the same time.
  • WC tested up to: 5.5.
  • Tested up to: 5.8.

3.5.5 - 10/05/2021

  • Fix - Frontend - Product limit message - Variations - Fix text about pro version.
  • Fix - Block guests according to limit options not working when blocking a variable product.
  • Dev - Add wpml-config.xml file allowing to translate some admin settings.
  • Dev - General - Block guests - Add to cart button text - Add "Change text on variations" option.
  • Dev - General - Block guests - Add "Add to cart Redirect" option.
  • Rearrange "Additional validation actions" option to Block checkout page section.
  • WC tested up to: 5.2.

3.5.4 - 22/03/2021

  • Fix - Block guest message gets displayed for unblocked products.
  • Fix - Frontend - My account tab - Tab ID - Shortcode always return english version.
  • Dev - Frontend - Product limit message > Add "Variations" option allowing to show limit message for variations.
  • Dev - Shortcodes - Add output_template param to alg_wc_mppu_current_product_limit shortcode having <span class="alg-wc-mppu-current-product-limit">{output_msg}</span> as default value.
  • WC tested up to: 5.0.
  • Tested up to: 5.7.

3.5.3 - 03/02/2021

  • Fix - Check "Guests" option on is_product_blocked_for_guests() function.
  • Dev - Frontend - Create [alg_wc_mppu_customer_msg] shortcode with bought_msg, not_bought_msg, and bought_msg_min params.
  • Dev - Frontend - Change "Customer message" option default value to [alg_wc_mppu_customer_msg] shortcode and allow its use there.
  • Dev - General - Create "Do nothing but block guests from purchasing products beyond the limits" option.

3.5.2 - 28/01/2021

  • Dev - Allow My account tab id to run a shortcode.
  • Dev - General - Add "Hide products blocked from guest users" option.
  • Dev - General - Add "Change add to cart button text from blocked products" option.
  • Dev - General - Add "Custom add to cart button text" option.
  • Dev - General - Add my account link to block message by default.

3.5.1 - 25/01/2021

  • Fix - Frontend - "Block checkout page" option allows to place an order with a 100% coupon and shows an error at the same time.
  • Dev - Frontend - Add - "Validation actions" option allowing to validate the limits using any WordPress action.
  • Dev - General - Guests - Add "Block method" option.
  • Dev - General - Guests - Add "Block guests" option related to "Limits > Per product", "Limits > Per product category", and "Limits > Per product tag".
  • Dev - Developers - Add alg_wc_mppu_is_product_blocked_for_guests hook.
  • Add FAQ question about the possibility of limiting different products at the same time.
  • WC tested up to: 4.9

3.5.0 - 15/12/2020

  • Fix - Mode - Product prices (incl. tax) - Validate on add to cart - Always including taxes in product price now.
  • Dev - General - "Multi-language" option added ("WPML", "Polylang").
  • Dev - General - Mode - "Product prices (excl. tax)" option added (and "Product prices" option renamed to "Product prices (incl. tax)").
  • Dev - General - Mode - "Product orders" option added.
  • Dev - General - Mode - "Product volumes" option added.
  • Dev - General - User roles - "Enabled user roles" option added.
  • Dev - General - "Count by current payment method" option added.
  • Dev - Placeholders - %payment_method_title% placeholder added.
  • Dev - Data - Saving order payment method in product in product/term sales data now.
  • Dev - Formula - payment_method shortcode attribute added.
  • Dev - Advanced - "Lifetime from totals" option added (defaults to no). This changes the previous behaviour in plugin, where lifetime data was always retrieved from totals.
  • Dev - Developers - alg_wc_mppu_data_product_or_term_id filter added.
  • Dev - Developers - alg_wc_mppu_get_cart_item_amount_by_term filter added.
  • Dev - Developers - alg_wc_mppu_get_cart_item_amount_by_parent filter added.
  • Dev - Developers - alg_wc_mppu_cart_item_amount filter added.
  • Dev - Developers - alg_wc_mppu_user_already_bought_do_count_order filter added.
  • Dev - Developers - alg_wc_mppu_user_already_bought filter added.
  • Dev - Developers - alg_wc_mppu_get_max_qty - Filter applied to empty (i.e. zero) result as well now.
  • Dev - Admin settings descriptions updated.
  • Dev - Code refactoring.
  • WC tested up to: 4.8.
  • Tested up to: 5.6.

3.4.0 - 01/12/2020

  • Fix - Formula - product_sku attribute - Product variable is now correctly reset for each new product check.
  • Dev - General - Guests - "Identify guests by IP address" option added ("Block guests" option renamed to "Guests", option type changed from checkbox to radio).
  • Dev - General - "Hide products" option added.
  • Dev - General - Date range - "Custom date range unit" option added.
  • Dev - Frontend - Cart notice - "Cart notice type" option added.
  • Dev - Frontend - Cart notice - "As text" value added (option type changed from checkbox to select).
  • Dev - Frontend - My Account - "Tab content" option added.
  • Dev - Admin - "Export" section added, including "export sales data for all users" link and "export sales data" link (for "Editable sales data").
  • Dev - Advanced - "Time function" defaults to "Local (WordPress) time" now (was defaulting to "Coordinated Universal Time (UTC)").
  • Dev - Developers - alg_wc_mppu_get_notice_placeholders filter added.
  • Dev - Localization - load_plugin_textdomain moved to the init hook.
  • Dev - Admin settings descriptions updated.
  • Dev - Code refactoring.
  • Plugin author updated.
  • WC tested up to: 4.7.

3.3.2 - 18/10/2020

  • Fix - Shortcodes - [alg_wc_mppu_user_product_limits] - Negative values replaced with zero in "Remaining" and "Max" columns.
  • Dev - Frontend - My Account - "Tab icon" option added.
  • Dev - Frontend - My Account - Admin settings restyled.
  • Dev - Minor code refactoring.
  • WC tested up to: 4.6.

3.3.1 - 14/10/2020

  • Dev - Frontend - My Account - Shortcodes are now processed in tab title.

3.3.0 - 08/10/2020

  • Fix - Allowing negative value (i.e. -1) in all limits settings now.
  • Fix - Variable products - If "Use variations" option is disabled, plugin was incorrectly counting variation's quantity for the initial order. This is fixed now.
  • Dev - Formula - Math expressions are now evaluated in formulas.
  • Dev - Formula - [alg_wc_mppu_user_bought] shortcode added.
  • Dev - Frontend - Single product page (and [alg_wc_mppu_current_product_limit] shortcode) - Placeholders added: %in_cart%, %bought_plus_in_cart%, %remaining_minus_in_cart%; also (for consistency): %adding%, %in_cart_plus_adding%, %bought_plus_in_cart_plus_adding%, %remaining_minus_in_cart_minus_adding%.
  • Dev - General - "Order statuses: Delete" option added.
  • Dev - "Use variations" added to per product settings.
  • Dev - Admin settings descriptions updated.
  • Dev - Core - alg_wc_mppu_get_first_order_date_exp filter added.
  • Dev - Code refactoring.
  • Tested up to: 5.5.
  • WC tested up to: 4.5.

3.2.5 - 23/07/2020

  • Fix - Formula - "All products" limit value was used as a fallback for the formula even if "All products" option was disabled. This is fixed now.
  • Dev - Frontend - "Multiple notices" option added.

3.2.4 - 21/07/2020

  • Fix - Taxonomy filters fixed.
  • Dev - Code refactoring.

3.2.3 - 11/07/2020

  • Fix - Converting order date according to "Advanced > Time function" option now.
  • Dev - Advanced - Time function - Options renamed ("Server time" to "Coordinated Universal Time (UTC)", and "WordPress time" to "Local (WordPress) time").
  • Dev - Formula - product_sku attribute added to the [alg_wc_mppu] shortcode.
  • Dev - Code refactoring.
  • WC tested up to: 4.3.

3.2.2 - 03/07/2020

  • Dev - Shortcodes - [alg_wc_mppu_placeholder] shortcode added.

3.2.1 - 22/06/2020

  • Dev - Frontend - Placeholders - %first_order_date_exp%, %first_order_date% - Getting date and time format from WordPress settings now (i.e. instead of hard-coded Y-m-d H:i:s).

3.2.0 - 18/06/2020

  • Dev - Frontend - Customer message (and [alg_wc_mppu_current_product_limit], [alg_wc_mppu_term_limit] shortcodes) - %first_order_date%, %first_order_amount%, %first_order_date_exp%, %first_order_date_exp_timeleft% placeholders added.
  • Dev - Frontend - Single product page - "Text in product description" option added.
  • Dev - Formula - [alg_wc_mppu] - Getting time for start_date and end_date shortcode attributes according to "Advanced > Time function" option now.
  • WC tested up to: 4.2.

3.1.1 - 22/05/2020

  • Dev - General - Block guests - Outputting message on AJAX add to cart now.
  • Dev - Frontend - Customer message - %in_cart%, %bought_plus_in_cart%, %remaining_minus_in_cart%, %adding%, %in_cart_plus_adding%, %bought_plus_in_cart_plus_adding%, %remaining_minus_in_cart_minus_adding%, %term_name% placeholders added.

3.1.0 - 08/05/2020

  • Dev - Formula - is_downloadable, is_virtual attributes added to the [alg_wc_mppu] shortcode.
  • Dev - Formula - start_date, end_date, not_date_limit attributes added to the [alg_wc_mppu] shortcode.
  • Dev - Formula - Admin settings descriptions updated.
  • Dev - [alg_wc_mppu_term_limit] shortcode added.
  • Dev - alg_wc_mppu_date_to_check filter - product_or_term_id, current_user_id and is_product params added.
  • Dev - Code refactoring.
  • WC tested up to: 4.1.

3.0.1 - 29/04/2020

  • Fix - Formula - Shortcode bug (limit attribute vs deprecated max_qty attribute) fixed.
  • Dev - Frontend - Single product page - Default message updated (from "The remaining quantity for..." to "The remaining amount for...").
  • Dev - Reports - Sales Data - Column title updated (from "Qty" to "Bought").

3.0.0 - 14/04/2020

  • Dev - General - "Mode" option added (with possible options: "Product quantities" (default), "Product prices" and "Product weights").
  • Dev - Frontend - Default values for the "Customer message" and "Single product page" messages updated (pcs. removed; placeholders changed (%max_qty% to %limit, %qty_already_bought% to %bought%, %remaining_qty% to %remaining%)).
  • Dev - Frontend - My Account - "Tab id" option added (defaults to product-limits).
  • Dev - Frontend - My Account - "Tab title" option added (defaults to Product limits).
  • Dev - Frontend - My Account - Default tab title changed from "Quantities" to "Product limits".
  • Dev - Formula - Shortcode renamed (from [alg_wc_mppu_max_qty] to [alg_wc_mppu]); max_qty attribute renamed to limit.
  • Dev - [alg_wc_mppu_user_product_quantities] shortcode renamed to [alg_wc_mppu_user_product_limits].
  • Dev - [alg_wc_mppu_current_product_quantity] shortcode renamed to [alg_wc_mppu_current_product_limit].
  • Dev - Admin settings descriptions updated ("... quantities..." changed to "... limits..." etc.). "Quantities" section renamed to "Limits".
  • Dev - "Reset settings" admin notice updated.
  • Tested up to: 5.4.

2.6.0 - 23/03/2020

  • Dev - General - "Block guests" options added.
  • Dev - Admin settings restyled and descriptions updated.
  • Dev - Minor code refactoring.

2.5.2 - 13/03/2020

  • Dev - Advanced - "Duplicate product" option added (defaults to no).
  • WC tested up to: 4.0.

2.5.1 - 05/03/2020

  • Fix - General - Payment gateways - Now checking chosen payment gateway when validating quantities (in Alg_WC_MPPU_Core::check_quantities()).
  • Dev - Frontend - "Cart notice" option added.
  • Dev - Frontend - Single product page - "Text" option added (and option renamed from "Permanent notice").
  • Dev - Frontend - Single product page - Now replacing negative max qty with zero.
  • Dev - [alg_wc_mppu_current_product_quantity] shortcode added.

2.5.0 - 28/02/2020

  • Fix - Core - get_user_already_bought_qty() - Making sure that the returned value is always numeric (i.e. returning zero instead of empty).
  • Fix - Core - alg_wc_mppu_check_quantities_for_product filter - Now applying filter to false results also.
  • Dev - Frontend - "My Account" options added.
  • Dev - Frontend - "Permanent notice" option added.
  • Dev - [alg_wc_mppu_user_product_quantities] shortcode added.
  • Dev - General - Custom date range - Default value changed to 3600 (was 1).
  • Dev - Data - alg_wc_mppu_save_quantities filter added.
  • Dev - Data - alg_wc_mppu_calculate_data_wc_get_orders_args filter added.
  • Dev - Code refactoring.

2.4.3 - 18/02/2020

  • Fix - Formula - It's no longer required to have at least one of the "Quantities" section checkboxes to be enabled for "Formula" to be active.
  • Fix - Notices - Now always using the correct product ID (i.e. variation vs main variable product ID).
  • Dev - General - "Payment gateways" option added.
  • Dev - alg_wc_mppu_check_quantities_for_product filter added.

2.4.2 - 05/02/2020

  • Dev - Formula - membership_plan shortcode attribute added.
  • Dev - alg_wc_mppu_get_cart_item_quantities filter added.
  • Dev - alg_wc_mppu_validate_on_add_to_cart_quantity filter added.
  • Dev - alg_wc_mppu_save_quantities_item_qty filter added.
  • WC tested up to: 3.9.

2.4.1 - 20/01/2020

  • Dev - Replacing negative max qty with zero in notice now.
  • Dev - Code refactoring.

2.4.0 - 28/12/2019

  • Dev - Tools - "Delete sales data" tool added.
  • Dev - Tools - Advanced - "Orders date range" option added.
  • Dev - Tools - Advanced - "Query block size" option added.
  • Dev - Tools - Advanced - "Time limit" option added.
  • Dev - Tools - Advanced - "Loop function" option added.
  • Dev - Tools - Advanced - "Debug" option added.
  • Dev - Settings - General - Section split into two separate sections ("General" and "Frontend").
  • Dev - Settings - Admin & Tools - Section split into two separate sections.
  • Dev - Code refactoring.

2.3.1 - 25/12/2019

  • Dev - General Options - Date range - "Custom" date range options added.
  • Dev - "Advanced" options section added.

2.3.0 - 13/12/2019

  • Fix - User roles - "Guest" user role removed from the lists.
  • Dev - "Formula" (i.e. "Max Quantity by Formula") section added.
  • Dev - Code refactoring.
  • Tested up to: 5.3.

2.2.0 - 10/11/2019

  • Dev - General Options - "Order statuses" option added.
  • Dev - General Options - "User roles" option added.
  • Dev - Admin Options - "Editable sales data" options added (sales data can now be edited in backend on user's edit page).
  • Dev - alg_wc_mppu_get_max_qty filter added.
  • Dev - Admin settings restyled and split into sections.
  • Dev - Code refactoring.
  • WC tested up to: 3.8.

2.1.0 - 01/10/2019

  • Dev - General Options - Date range - "This hour", "This day", "This week", "Last hour", "Last 24 hours", "Last 7 days" ranges added.
  • Dev - General Options - "Time function" option added.
  • Dev - alg_wc_mppu_date_range filter added.
  • Dev - alg_wc_mppu_date_to_check filter added.
  • WC tested up to: 3.7.

2.0.0 - 28/07/2019

  • Dev - Per Product Taxonomy - "Per product tag" option added.
  • Dev - Per Product Taxonomy - "Per product category" option added.
  • Dev - General Options - "Use variations" option added.
  • Dev - General Options - "Validate on add to cart" option added.
  • Dev - General Options - "Date range" option added.
  • Dev - General Options - "Exclude products" option added.
  • Dev - Tools - "Delete & recalculate sales data" tool added.
  • Dev - Tools - Recalculate sales data - Button replaced with checkbox.
  • Dev - [alg_wc_mppu_translate] shortcode added (for "Customer message").
  • Dev - Major code refactoring.
  • Tested up to: 5.2.

1.1.2 - 20/04/2019

  • Dev - Admin settings descriptions updated.
  • Dev - "WC tested up to" updated.

1.1.1 - 08/04/2019

  • Dev - Code refactoring.
  • Dev - Data sanitized and escaped.

1.1.0 - 22/10/2018

  • Dev - Admin settings descriptions updated.
  • Dev - Code refactoring.

1.0.0 - 18/06/2018

  • Initial Release.