Documentation for the Maximum Products per User for WooCommerce plugin.

Documentation for Maximum Products per User for WooCommerce Plugin

Author: WPFactory PluginsVersion: 4.1.7Updated: 2 weeks ago
Requires WordPress version: 4.4Tested up to WordPress version: 6.5

Table of Contents

Settings

 

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

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.