-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme.txt
908 lines (677 loc) · 50.7 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
=== Maximum Products per User for WooCommerce ===
Contributors: wpcodefactory, omardabbas, karzin, anbinder, algoritmika, kousikmukherjeeli
Tags: woocommerce, product quantity, limits, quantity restriction, order restriction
Requires at least: 4.4
Tested up to: 6.7
Stable tag: 4.3.4
License: GNU General Public License v3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html
Limit number of items your WooCommerce customers can buy (lifetime or in selected date range).
== Description ==
> “Great plugin: 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 duplications
Support Is brilliant and fast. Strongly advised!” – ⭐⭐⭐⭐⭐ [tommaso78](https://wordpress.org/support/topic/great-plugin-28538/)
[Pro Version](https://wpfactory.com/item/maximum-products-per-user-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme) | [Support](https://wpfactory.com/support/item/maximum-products-per-user-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme) | [Documentation & How to](https://wpfactory.com/docs/maximum-products-per-user-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme) | [Demo](https://productperuser.instawp.xyz/)
Have you ever wanted to restrict the products your customer can purchase? Either in lifetime or in specific period?
While this might not be the case for everyone (since we all want to sell as much as we can), in many cases you want to maintain your inventory and guarantee fairness across your customers (specially when running massive promotions), and here comes a handy plugin to restrict the amount, quantities, or orders that each customer can place on your store.
In a nutshell, here is what you can do with this plugin:
* Limit maximum products quantity per user
* Select type of limitation/restriction to apply, whether by quantity, number of orders, prices, weights, or volume
* Specify how long the restriction to be applied, lifetime, in a month/year or custom date range
* Customize & set restrictions by user role
* Control & customize messages appearing for users on limits
* Exclude specific products from plugin settings
* Multi-language sites support (WPML & Polylang)
And much more.
___
## 🤝 Recommended By##
* [WPGlob: 5+ Product Plugins for WordPress](https://wpglob.com/5-product-catalog-plugins-for-wordpress-free-and-pro/ "WPGlob: 5+ Product Plugins for WordPress")
* [Themeum: Limit Course Per User](https://docs.themeum.com/tutor-lms/tutorials/limit-one-course-per-user/ "Themeum: Limit Course Per User")
* [WP Help Blog: How to Set a Minimum and Maximum Order in Your WooCommerce Online Store](https://wphelp.blog/how-to-set-a-minimum-and-maximum-order-in-your-woocommerce-online-store/ "WP Help Blog: How to Set a Minimum and Maximum Order in Your WooCommerce Online Store")
* [WCLovers: Limit The Amount of Products a User Can Buy](https://wclovers.com/forums/topic/limit-the-amount-of-products-an-user-can-buy/ "WCLovers: Limit The Amount Of Products An User Can Buy")
* [WPHive: Top Plugins to Restrict Products by User](https://wphive.com/plugins/maximum-products-per-user-for-woocommerce/ "WPHive: Top Plugins To Restrict Products by User")
___
## 🚀 Main Features: FREE Version##
### 🚀 Restrict Maximum Products & Orders Per User ###
As basic as it sounds, the plugin allows you to restrict what your customers can purchase, restrictions/limits can be based on:
#### **Restrict by Product Quantity** ####
This method allows you to restrict the maximum number (quantity) of products a customer can purchase, restricting it by 10 for example will allow your customers to buy 10 of a single product, or 2 products with quantity of 5 each.
**Use cases:**
1. Limited Edition Items: You have a limited edition product, and you want to ensure that each customer can purchase only a maximum of 2 units to provide a fair opportunity for more customers to access the product.
2. Bulk Purchase Limit: To prevent abuse of discounts, you set a restriction of 10 units per order for a specific product, ensuring that customers cannot exploit bulk purchase discounts excessively.
#### **Restrict by Order** ####
This limits the number or orders a customer can place (lifetime or specified time range) on your store, useful when you want to restrict 1 order per month for example.
The plugin allows you to specify what order status(es) should be treated as a full order, like considering order in plugin restrictions when order status is "Completed" or "Processing" for example.
**Use cases:**
1. Subscription Services: Your store offers a subscription-based service, and you want to limit customers to one subscription order per month to align with your monthly billing cycle.
2. Pharmaceutical Prescriptions: In compliance with some pharmaceutical regulations, you can restrict customers to one order per month for prescription medications to ensure controlled and periodic dispensing.
#### **Restrict by Price (with/without tax)** ####
This allows you to control maximum price (per product) customers can purchase, for example, you can restrict specific user roles from buying expensive products if they are new to your store and afraid of fraud or high returns.
**Use cases:**
1. New Customer Trial Period: For new customers, you want to limit the purchase of high-value items during the first month to minimize the risk of fraud or returns, setting a maximum purchase price for specific user roles.
2. Membership Tiers: Different user roles have varying purchase limits based on their membership tiers. Premium members, for instance, can buy higher-priced items compared to standard members.
#### **Restrict by Product Weight & Volume** ####
If you need to restrict orders based on product weight or volume, the plugin helps in accomplishing that. This type of restrictions can be very useful in shipping constraints, when packages are set to specific dimensions (volume) or maximum weight per order.
**Use cases:**
1. Shipping Constraints: To comply with shipping regulations, you set restrictions on the maximum weight and volume per order. This ensures that customers cannot place orders that exceed the shipping constraints of your chosen carriers.
2. Fragile Items: Products with specific weight or volume constraints, such as fragile or bulky items, are restricted to ensure safe and cost-effective shipping, preventing customers from overloading orders with delicate items.
### 🚀 Restrict Maximum Products & Orders Per User Role ###
Set different restrictions & limitations for what your customers can purchase (order, quantity, prices, etc) based on user role, whether standard WordPress/WooCommerce roles, or custom ones you have.
**Use cases:**
1. Wholesale Customers: You have wholesale customers who buy in large quantities. Using the plugin, you can set higher product quantity limits for users with the "Wholesale" role, allowing them to place bulk orders while maintaining control over the order size.
2. VIP or Premium Members: You offer a VIP or premium membership program. Members with this special role enjoy the privilege of higher order limits and can purchase products at a higher price point, providing exclusive benefits to your loyal and high-value customers
3. New Customer Trial Period: To encourage new customers to explore your products, you set relaxed restrictions for users with the "New Customer" role during their first month. This allows them to experience a variety of offerings without immediate constraints on quantity or prices.
### 🚀 Select How Long Restriction Period to Last ###
When you limit the maximum products a customer can buy, you need to define the period in which this restriction will be applied, i.e. is it a lifetime, in a week, in a month, and so on.
You can specify to reset the count for every customer for any specific period (in seconds, minutes, hours, days, or weeks), where the customers will start a new purchase limit when that specified period passes.
### 🚀 Control Guest Users Limits ###
The plugin allows you to go further and control what restrictions to apply to guest users (non logged-in) in case you're allowing guest checkout on your WooCommerce store.
You can select from multiple options to apply restrictions in these cases:
- Do nothing (i.e. do not limit guests sales), such option will allow people to bypass all restrictions
- Do nothing but block guests from purchasing products beyond the limits, this will treat guest users similar to logged-in ones
- Block guests from buying products
- Identify guests by IP address
- Identify guests by checkout billing email address
### 🚀 Customize Messages & Notifications ###
You can personalize the messages appearing to your customers on different locations, informing them about their quantities and limits.
#### **Add to Cart Validation** ####
Select to validate product quantities when they add items to their cart, so customers are aware of limits before reaching the cart.
On cart, you can also configure the plugin to show notifications either as notice, error, or success with custom messages using shortcodes available.
If customers have multiple items with wrong limits, you can also show multiple notices (one for each product).
#### **Block Checkout** ####
You can prevent customers from accessing the checkout page on exceeded limits, and they will be redirected to the cart page in this case.
In addition, you can use more validation actions, like woocommerce_review_order_before_submit to validate the limits on checkout update.
#### **Show Info on Product Page** ####
Don't leave your customers lost between error messages when trying to add to cart, show product limit information either as a notice, in product summary, or product description.
Customize the message by showing the remaining amount allowed for that product, and you can also include what the customer has already bought, using this format:
"The remaining amount for %product_title% is %remaining% (you've already bought %bought% out of %limit%)."
#### **Show Limits on My Account Page** ####
Add a separate tab on "My Account" where customers can see the purchased, remaining, and maximum amounts they can buy from each product.
The tab is customizable by name, id, and icon (from FontAwesome), and further customization can be applied to its text content as well.
### 🚀 Admin Management Options ###
The plugin isn't only about restricting what customers can buy, it comes with variety of options that help admins better manage customers sales and see where they should/can enforce some limitations.
#### **Show Users Sales Data** ####
Admins can see and edit each user's sales data in their profile pages, so admins can have general overview of calculated sales data (periodic or lifetime) for each customer.
#### **Export Sales Data** ####
Admins can also have the option of exporting all users sales data to CSV files, with custom column separator.
You can also select to export users sales data in a single row (for further analysis) and customize data separator and any extra metas you need in the report.
### 🚀 Calculate & Recalculate Sales Data ###
Even if you installed the plugin just today, you can run a tool to recalculate all previous data for your customers, and include outputs in plugin restriction settings you want to apply.
You can also start in a clean slate at any moment, delete all saved sales data for your customers (from plugin calculations, not actual data) and start implementing limitations after that.
> “Great plugin & support: This plugin does exactly what it says it does. The creator Tom offers amazing support, and was very willing to help make sure everything was working perfectly. I definitely recommend this plugin and Tom’s support.” – ⭐⭐⭐⭐⭐ [jburkhart24](https://wordpress.org/support/topic/great-plugin-support-224/)
> “perfect service!: unbelievably good service. WPFactory quickly and accurately customized the plugin for us. This is how a plugin manufacturer must be. Thank you very much Pablo!” – ⭐⭐⭐⭐⭐ [rawagmbh](https://wordpress.org/support/topic/perfect-service-21/)
___
## 🏆 Do More: PRO Version ##
All what's listed above (and more) is available in the free version, but for those who would like to go further and beyond, we have a premium version of [Maximum Products per User for WooCommerce Pro](https://wpfactory.com/item/maximum-products-per-user-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme) plugin.
### 🏆Specify Limits by Category & Tags ###
The plugin by default deals with products quantities, the Pro feature allows you to add limits (all limits mentioned above) based on category & tag.
This option adds a new meta key in products categories & tags where you can specify the maximum limit you want to be enforced.
### 🏆Specify Limits by Product ###
Want to specify a maximum amount by product and not quantity? You can configure the maximum amount/quantity of any particular product using this option, by having a new key in each product page to set the limit you need.
### 🏆Set Limits using Advanced Formulas ###
The default limiting options aren't enough for you? Those who love math equations & formulas can use advanced methods to calculate limits for users, based on various shortcodes like:
user_role, payment_method, product_id, term_id, product_sku.
And much more.
### 🏆 Guest Users Advanced Options ###
In the Pro version, you can select to prevent guest customers from buying anything on your store, or allow regular guest checkout but prevent exceeding plugin limits.
Multiple options are also available to customize the error/notice messages to show to guest users.
You can even change "Add to cart" button text/label for guest users to something like "Login to purchase", furthermore, you can hide products blocked from guest users from shop/category & search pages.
### 🏆 Allow Exceeding Limits ###
If you just want error messages to become notices, you can allow users to place orders with exceeding limits without preventing them from checkout.
### 🏆 3rd Party Compatibility ###
The plugin works seamlessly with most plugins in their standard functionalities, but we've added several advanced compatibility options with Point of Sale for WooCommerce (by Actuality Extensions) & WPC Composite Products for WooCommerce (by WPClever) to provide more integration with these plugins.
## 💯 Why WPFactory?##
* **Experience You Can Trust:** Over a decade in the business
* **Wide Plugin Selection:** Offering 65+ unique and powerful plugins
* **Highly-Rated Support:** Backed by hundreds of 5-star reviews
* **Expert Team:** Dedicated developers and technical support at your service
___
## What's Next? Discover More Plugins by WPFactory ##
WPFactory has a diverse range of plugins tailored to enhance your experience, some of our top-selling plugins are:
* [**Min Max Step Quantity**](https://wpfactory.com/item/product-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Min Max Step Quantity**"): Set minimum, maximum, step, and default product quantities, including dropdowns and decimal options on WooCommerce (**[Free version](https://wordpress.org/plugins/product-quantity-for-woocommerce/ "Free version")**)
* [**Cost of Goods for WooCommerce**](https://wpfactory.com/item/cost-of-goods-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Cost of Goods WooCommerce**"): Enhance profit maximization and financial management by accurately calculating your WooCommerce store's COGS (**[Free version](https://wordpress.org/plugins/cost-of-goods-for-woocommerce/ "Free version")**)
* [**Maximum Products per User**](https://wpfactory.com/item/maximum-products-per-user-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Maximum Products per User**"): Impose personalized purchase limits based on user roles and date ranges to manage customer buying behavior (**[Free version](https://wordpress.org/plugins/maximum-products-per-user-for-woocommerce/ "Free version")**)
* [**Order Minimum/Maximum Amount**](https://wpfactory.com/item/order-minimum-maximum-amount-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Order Minimum/Maximum Amount**"): Customize order limits by amount, quantity, weight, or volume, including user role, category, and more (**[Free version](https://wordpress.org/plugins/order-minimum-amount-for-woocommerce/ "Free version")**)
* [**EU/UK VAT Manager for WooCommerce**](https://wpfactory.com/item/eu-vat-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**EU/UK VAT Manager for WooCommerce**"): Automate VAT compliance for your WooCommerce store, including settings and VIES validation for a seamless experience (**[Free version](https://wordpress.org/plugins/eu-vat-for-woocommerce/ "Free version")**)
* [**Email Verification for WooCommerce**](https://wpfactory.com/item/email-verification-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Email Verification for WooCommerce**"): Boost security and credibility by verifying customer emails, reducing spam, and improving email marketing (**[Free version](https://wordpress.org/plugins/maximum-products-per-user-for-woocommerce/ "Free version")**)
* [**Free Shipping Over Amount for WooCommerce**](https://wpfactory.com/item/amount-left-free-shipping-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Free Shipping Over Amount for WooCommerce**"): Encourage higher spending by offering free shipping based on amount, with a progress bar for customers (**[Free version](https://wordpress.org/plugins/amount-left-free-shipping-woocommerce/ "Free version")**)
* [**Dynamic Pricing & Bulk Quantity Discounts**](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Dynamic Pricing & Bulk Quantity Discounts**"): Advanced dynamic pricing and discount rules for WooCommerce, encouraging bulk purchases and driving more sales (**[Free version](https://wordpress.org/plugins/wholesale-pricing-woocommerce/ "Free version")**)
== Frequently Asked Questions ==
= Is it possible that the limits could work for different products at the same time instead of the same ones?
Yes, it's possible, but it's a bit of a workaround. You'll need to assign all your products to some category or tag. After that you need to enable "**Limits > Per product category**" (or "**Limits > Per product tag**"), and then set "**Limit per user**" option for that category (or tag) in "**Products > Categories > Your category > Edit**".
== Installation ==
**Follow these simplified steps to get your plugin up and running:**
**From the WordPress Admin Panel:**
1. Navigate to "Plugins" > "Add New".
2. Use the search bar and find the plugin using the exact name.
3. Click "Install Now" for the desired plugin.
4. Once the installation is finished, and click "Activate".
**Manual Installation Using FTP:**
1. Download the desired plugin from WordPress.org.
2. Using your preferred FTP client, upload the entire plugin folder to the /wp-content/plugins/ directory of your WordPress installation.
3. Go to "Plugins" > "Installed Plugins" in your dashboard and click "Activate".
**Manual download & upload from the WordPress Admin Panel:**
1. Download the desired plugin in a ZIP format.
2. On your site, navigate to "Plugins" > "Add New" and click the "Upload Plugin" button.
3. Choose the downloaded plugin file and click "Install Now."
4. After the installation is complete, click "Activate".
**Post-Activation:**
Once activated, access the plugin's settings by navigating to "WooCommerce > Settings" and look for the relevant tab.
== Changelog ==
= 4.3.4 - 09/12/2024 =
* Dev - Updated cross-selling and key manager library.
* Tested up to: 6.7.
* WC tested up to: 9.4.
= 4.3.3 - 23/10/2024 =
* Fix - Frontend - Product limit message - Fixed error "Class optimistex\expression\MathExpression not found".
* Dev - Updated `optimistex/math-expression` library.
= 4.3.2 - 21/10/2024 =
* Fix - Fixed php warning on `Alg_WC_MPPU_Users::get_order_products_by_term()`.
= 4.3.1 - 18/10/2024 =
* Dev - Capability from cross-selling fixed.
= 4.3.0 - 14/10/2024 =
* Dev - WPFactory admin menu removed from pro version.
* Fix - WPFactory menu and submenus are now visible and accessible.
= 4.2.9 - 07/10/2024 =
* Fix - Vulnerability issue fixed.
* Dev - Add WPFactory Key Manager library.
* Dev - Add Cross-selling library.
* Dev - Move settings to WPFactory menu.
* WC tested up to: 9.3.
= 4.2.8 - 13/09/2024 =
* Fix - Admin - User sales data - "Show sales data button" was not working on other profile pages.
* Fix - Admin - User sales data - Options optimized.
* Dev - Admin - User sales data - Added new option to delete user's sales data.
* Dev - Admin - User sales data - Added new option to select the email type to be used to delete user's sales data.
= 4.2.7 - 09/09/2024 =
* Fix - Fixed a bug with the product quantities mode.
= 4.2.6 - 04/09/2024 =
* Dev - General - Added new option to deduct partial refunds from user limits.
= 4.2.5 - 03/09/2024 =
* WC tested up to: 9.2.
= 4.2.4 - 03/09/2024 =
* Fix - Fixed warning regarding `is_singular()` function.
* Dev - General - Created option to hide products with exceeded limits from search and from direct links.
= 4.2.3 - 23/07/2024 =
* Dev - Admin - Added option to enable/disable the product sales data on product page.
* Dev - Admin - Added option to load the product sales data using AJAX.
* Tested up to: 6.6.
* WC tested up to: 9.1.
= 4.2.2 - 02/07/2024 =
* Fix - General - "Disable product purchase" was not working properly in some circumstances.
* WC tested up to: 9.0.
= 4.2.1 - 07/06/2024 =
* Fix - General - Quantity input - The quantity field maximum attribute doesn't work well on cart block.
= 4.2.0 - 06/06/2024 =
* Fix PHP warnings regarding dynamic properties.
* Fix - WooCommerce cart and checkout blocks sometimes do not prevent the order from being placed.
= 4.1.9 - 03/06/2024 =
* Dev - Change "orderby" param from "title" to "menu_order title" on `[alg_wc_mppu_user_terms_limits]` and `[alg_wc_mppu_user_product_limits]` shortcodes.
= 4.1.8 - 31/05/2024 =
* Fix - PHP message: PHP Warning: Undefined variable $element_type in Alg_WC_MPPU_Multi_Language on line 94.
* Improve "Weeks starts on" description.
* WC tested up to: 8.9.
= 4.1.7 - 15/04/2024 =
* Fix - Frontend - Product limit message - PHP Warning: an unexpected error occured "&" [] false.
= 4.1.6 - 04/04/2024 =
* Update - readme.txt
* Tested up to: 6.5.
= 4.1.5 - 29/03/2024 =
* Dev - Advanced - Add option to compensate current time.
* Dev - Add new filter `alg_wc_mppu_datetime_to_compare`.
= 4.1.4 - 28/03/2024 =
* Fix - If Guests option is set as "Block guests from buying products", the "Frontend > Block checkout page" doesn't work well for guests.
* Fix - "Change Tools > Advanced > Loop function" to `wc_get_orders()` to avoid problems with HPOS.
* Fix - Multiple warnings of "Creation of dynamic property is deprecated" are being triggered.
* WC tested up to: 8.7.
= 4.1.3 - 13/02/2024 =
* Change on readme.
= 4.1.2 - 12/02/2024 =
* fix readme.txt file.
= 4.1.1 - 12/02/2024 =
* Update readme.txt file.
* WC tested up to: 8.5.
= 4.1.0 - 01/02/2023 =
* Fix - Call to a member function get_week_starts_on_default_val() on null.
= 4.0.9 - 26/01/2023 =
* Dev - General - Date range options - New option "Week starts on" That works with the "This week" date range option.
= 4.0.8 - 08/01/2023 =
* Fix - Error: Call to a member function get_product_id_from_main_language() on null in `Alg_WC_MPPU_Core`.
= 4.0.7 - 28/12/2023 =
* Upgrade readme.txt boom char.
= 4.0.6 - 26/12/2023 =
* Fix - "Undefined property: `Alg_WC_MPPU_Core::$multilanguage` in `Alg_WC_MPPU_Core`".
= 4.0.5 - 19/12/2023 =
* Fix - Advanced - Time offset - Link to strtotime on admin is wrong.
* Tested up to: 6.4.
* WC tested up to: 8.4.
* Update readme.txt file.
= 4.0.4 - 08/11/2023 =
* Fix - Shortcode `[alg_wc_mppu_user_bought]` doesn't work if the formula option is not enabled.
* Fix - Variation data is being saved only on the parent product.
* Fix - Param `is_product` from `alg_wc_mppu_user_bought` is not consistent.
* Fix - General - Quantity input option may prevent products from being added to cart.
* Fix - General - Quantity input option may not work on variable products.
= 4.0.3 - 07/11/2023 =
* Fix - General - Quantity input option might trigger an error.
= 4.0.2 - 06/11/2023 =
* Fix - General - Quantity input doesn't set the max value if the remaining product quantity is zero.
= 4.0.1 - 03/11/2023 =
* Improve admin text.
= 4.0.0 - 03/11/2023 =
* Fix - Undefined array key "product-limits" in `Alg_WC_MPPU_Shortcodes`.
* Dev - Frontend - Create `show_restrictions_col` param for the [alg_wc_mppu_user_product_limits] shortcode. Default value is "true".
= 3.9.9 - 02/11/2023 =
* Fix - Frontend - My account tab is not getting displayed on plugin activation.
* Fix - When a term and a product id collide, the product data can't be saved.
* Dev - Improve performance of `Alg_WC_MPPU_Core::get_max_qty_for_product()`.
* Dev - General - Add to cart button - Create new option to disable product purchase if its remaining quantity for current user is lower than the limit.
= 3.9.8 - 26/10/2023 =
* Dev - New attribute to the shortcode [alg_wc_mppu_user_product_limits show_only_limited_products="true"]
= 3.9.7 - 18/10/2023 =
* Fix - Background processing does not work.
= 3.9.6 - 17/10/2023 =
* Dev - Move main class to a separate file.
* Dev - Add compatibility with HPOS.
* WC tested up to: 8.2.
= 3.9.5 - 02/10/2023 =
Fix - error with [user_product_limits_shortcode] condition.
= 3.9.4 - 02/10/2023 =
* Add - off_page_nav attribute to [user_product_limits_shortcode].
= 3.9.3 - 21/09/2023 =
* Fix - Fatal error issue with product quantity.
= 3.9.2 - 19/09/2023 =
* Fix - count validate when guest user register self with same email as billing email.
* WC tested up to: 8.1.
= 3.9.1 - 14/08/2023 =
* Fix - Call to undefined function `is_user_logged_in()` in some circumstances.
= 3.9.0 - 14/08/2023 =
* Fix - Call to undefined function `is_user_logged_in()` in some circumstances.
* Tested up to: 6.3.
* WC tested up to: 8.0.
= 3.8.9 - 17/06/2023 =
* WC tested up to: 7.8.
= 3.8.8 - 10/06/2023 =
* Dev - Guests - New option `identify guests by checkout billing email address`.
= 3.8.7 - 07/05/2023 =
* Dev - Formula - New attribute `product_limit_meta`.
= 3.8.6 - 04/05/2023 =
* Dev - Admin - Editable sales data - Improve the user profile sales data UI.
* Dev - Admin - Editable sales data - New option: Load sales data using AJAX.
* Tested up to: 6.2.
* WC tested up to: 7.6.
= 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](https://simple-membership-plugin.com/).
* 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.
== Upgrade Notice ==
= 1.0.0 =
This is the first release of the plugin.