An amazing WooCommerce extension to implement multiple discount criterias with ultimate convenience.
Discounts & Promotions Automation for the WooCommerce Products is compatible with WooCommerce and s2Member Plugin.
Tags
woocommerce, discounts, percentage, s2Member, sales, memership, weight, membership levels, cart discounts, quantity
- Download the latest version and extract it in the /wp-content/plugins/ directory
- 通过 WordPress 的的“Plugins”菜单激活插件
Once the plugin is activated, you can use it as follows:
- First navigate to WooCommerce settings. Under the discounts tab, find the global
configuration for discounts. Make sure "Discounts Enabled" is checked and optionally
fill information about discounts which will be visible on the cart page. You can include HTML
markup in the text - you can, for instance, include a link to your page with your discount
policy. In case you need the plugin to work well with product variations, make sure that the
"Treat product variations separately" option is unchecked. Since version 2.0 you
may choose to use a flat discount applied to the cart item subtotal. Optionally you may also
modify the CSS styles for the old value and the new value which is displayed in the cart.
Save the settings.
- Navigate to Products and choose a product for which you want to create a discount policy.
In the Product Data panel, click discounts and optionally fill information about the discount
which will be visible in the product description.
- Click "Define discount criteria" button to create a policy. Quantity (min.) means minimal
number of ordered items so that the (second textbox) Discount applies. It is possible to
add up to five discount lines to fine-tune the discount setting.
3.6.8
Sales automation reinstated.
3.6.0
New: Added email time slot selector (Morning, Noon, Evening, etc.) with multiselect checkboxes for promotional emails.
3.5.8
New: On sale page we will have product-id as a parameter in the url to handle multiple products on sale parallel.
3.5.7
Fix: On sale products meta cleanup after expiry.
3.5.6
New: Promotion Automation feature added with the expiry hours dropdown.
3.5.4
Fix: PHP Fatal error: Uncaught Error: Call to a member function get_cart() on null.
3.5.3
Fix: Reduced the number of iterations for item price filter while calculating the discounts.
3.5.2
Fix: Reduced the number of iterations for item price filter while calculating the discounts.
3.5.1
Updating for the WordPress version.
3.5.0
Fix: Uncaught Error: Call to a member function get_type() on bool.
3.4.9
Improved version for s2Member (Pro) plugin.
3.4.8
Improved version for s2Member (Pro) plugin.
3.4.7
Improved version for WordPress 6.0.
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
Improved version after in depth review by the plugin author and WordPress Plugin Review Team.
3.4.1
Free version revised with qty. based discounts.
3.4.0
Undefined property: stdClass::$post_type - fixed.
3.3.9
Light version revised.
3.3.8
Language translation files updated.
3.3.7
Discount methods revised and tested to ensure accuracy.
3.3.6
Uncaught Error: Call to a member function WC->session->get(), fixed.
3.3.5
Discount Label/Caption added on settings page.
3.3.4
Settings page revised and discount value ensured in email.
3.3.3
WC Membership compatibility revised.
3.3.2
session_write_close() inserted after using session.
3.3.1
Made easy to understand premium features.
3.3.0
Made easy to understand premium features.
3.2.9
Made easy to understand premium features.
3.2.8
An improvement made in script.
3.2.7
PHP warning on cart page. Fixed.
3.2.6
Tabs introduced for better usability and added visual aids as well.
3.2.5
Updated and improved UI and UX.
3.2.4
"Number of decimals" will control the decimal places in this plugin from this version onwards.
3.2.3
Updated round of discounts on percentage.
3.2.2
Updated for WP 5.4.
3.2.1
Another PHP notice fixed.
3.2.0
Another PHP notice fixed.
3.1.9
PHP notice fixed – Product properties should not be accessed directly.
3.1.8
Improved discount text in emails for percentage discount.
3.1.7
Improved Gabriela & Jose's Logic.
3.1.6
Sprintf function issue fixed.
3.1.5
Improved qty. discount range display.
3.1.4
Fixed a minor javascript file symbol issue.
3.1.3
Fixed a minor echo thing on admin screen.
3.1.2
Pricing scale text is editable from settings page now.
3.1.1
Warning: sprintf(): Too few arguments issue resolved.
3.1.0
%% issue resolved.
3.0.9
Languages added.
3.0.8
WooCommerce get_cart() uncaught fatal error fixed on product page.
3.0.7
WooCommerce Memberships compatibility added using class_exists check WC_Memberships_Loader.
3.0.6
Flat discount > cart page > subtotal section correction.
3.0.5
Flat discount updated price round float number format correction.
3.0.4
Flat discount updated price formula refined.
3.0.3
Pricing scale turned ON by default.
3.0.2
Fixed a few PHP notices but it's an important update.
3.0.1
Fixed a PHP notice regarding undefined variable unit price.
3.0.0
Fixed a PHP notice regarding undefined index 0.
2.5.9
Refined pricing scale display area.
2.5.8
Refined and tested varitions discount criteria.
2.5.7
Undefined constant WDP_PER_PRODUCT related warning fixed.
2.5.6
Refined the varitions related discount aspect.
2.5.5
Call to undefined method WC_Product_Simple::get_id() error fixed.
2.5.4
Discounts display on product page now added as an option in product page settings.
2.5.3
Category based discount feature refined and explained in the video tutorial again.
2.5.2
Added another compatibility with latest version of the WooCommerce.
2.5.0
s2member compatibility nonce related bug fixed.
2.4.9
Display price issue in admin panel price column resolved.
2.4.8
WooCommerce > Cart Page > Old price was having 4 decimals > Fixed.
2.4.7
User roles are added with multiple selection to ignore. If you don't want to allow a user role to get discounts.
2.4.6
Weight based discounts improved with multiple quantities.
2.4.5
Sanitized input and fixed direct file access issues.
2.4.4
Discounts available with shipment conditions and can be restricted on user decision. And currency symbol position implemented as from WooCommerce settings page.
2.4.3
Discounts available with shipment conditions.
After discounts applied, prices were missing decimal values. Fixed.
2.4.2
Weight based discounts introduced.
2.4.1
Flat discounts refined for variable products.
2.4.0
Flat discounts refined.
2.3.8
Discounts refined and new features added.
2.3.7
Refining conditions and settings.
2.3.6
Checkout process refined.
2.3.5
Variable products refined.
2.3.4
An important Fatal Error fixed on report.
2.3.3
A few warnings were reported and those are fixed.
2.3.2
Variable products refined.
2.3.1
Flat discount refined.
2.3.0
Global settings improved.
2.2.3
Flat discount global settings refined.
2.2.2
Flat discount per product refined.
2.2.1
A minor issue fixed in flat discount per product.
2.2.0
s2member compatibility added.
2.1.0
A few important fixes.
2.0.3
Discounted prices should not be considered for discount again.
2.0.2
Discounted prices should not be considered for discount again.
2.0.1
Discounted prices on cart page.
2.0
Global settings are introduced and a useful widget for discounts detail under product short description.
1.0
Releasing 1.0 version.
3.6.8
- Fix: Sales automation reinstated. [13/05/2025]
3.6.7
- Fix: Prevent duplicate promotional email logs when cron runs repeatedly under load.
- New: Added support for dynamic discount preview on product pages (when active promo key is detected).
- New: Admin setting to limit promotional emails to users with past purchases only.
- Improvement: Promo key usage is now tracked per-product for detailed reporting.
- Improvement: Better compatibility with object caching plugins like Redis and Memcached.
3.6.6
- Already listed above — includes session-based keys, bulk sale reset, real-time clock, etc.
3.6.5
- New: Email subject personalization now supports fallback tokens (e.g., {{first_name}} → Guest).
- New: Introduced promo_batch_summary() helper to log sent count and skipped recipients per run.
- Improvement: Better support for multilingual setups using wpml_translate_string() where available.
- Fix: Removed expired promo keys from session on cart update to avoid confusion.
3.6.4
- New: Added toggle to disable promotional automation entirely from plugin settings.
- Improvement: Display batch ID and scheduled time beside each sent promo email in logs.
- Fix: Fixed session conflict when visiting cart and product pages simultaneously.
- Fix: Corrected shortcode display bug for [wdp_discount_table] on mobile views.
3.6.3
- New: Export logs button added to promotional email batch page (CSV format).
- Improvement: Optimized database queries for sale_price and promo_key operations.
- Fix: Corrected logic when multiple categories share overlapping discounts.
- Fix: Resolved issue where discount preview was not reflecting in cart under some caching setups.
3.6.2
- New: Added admin notice when sale price reset is executed manually.
- Improvement: Refactored sale reset logic for faster batch processing on large stores.
- Fix: Skipped expired variations during sale cleanup to avoid false warnings.
- Fix: Prevented HTML injection in admin note fields via strict sanitization.
3.6.1
- Fix: Prevented duplicate promotional emails within the same session using session-bound hash checks.
- New: Added filter wdp_email_subject_prefix to customize subject line prefix dynamically.
- Improvement: Improved cron job reliability with fallback validation on page load.
- Fix: Corrected timezone discrepancies for email time slot evaluation.
3.6.0
- New: Added email time slot selector (Morning, Noon, Evening, etc.) with multiselect checkboxes for promotional emails.
- New: Admin can now configure preferred hours for email sending with visual feedback.
- New: Real-time server clock widget added in admin interface to reflect accurate site time.
- New: Session-based promotion key system introduced for 24-hour discounts without requiring coupon creation.
- New: Automatically detect and validate promotion time window using generated keys.
- New: Admin can now reset all sale prices from products/variations currently on sale with a bulk operation.
- Improvement: Enhanced AJAX feedback with Bootstrap alert messages for form submission responses.
- Fix: Proper comparison and sorting of email time slot arrays to detect updates correctly.
- Fix: Corrected customer name usage in email greeting filters.
3.5.8
- New: On sale page we will have product-id as a parameter in the url to handle multiple products on sale parallel. [09/03/2025]
3.5.7
- Fix: On sale products meta cleanup after expiry. [27/02/2025]
3.5.6
- New: Promotion Automation feature added with the expiry hours dropdown. [25/02/2025]
3.5.4
- Fix: PHP Fatal error: Uncaught Error: Call to a member function get_cart() on null. [12/06/2024]
3.5.3
- Fix: Reduced the number of iterations for item price filter while calculating the discounts. [26/05/2024][Thanks to Sidney Nourry]
3.5.2
- Fix: Reduced the number of iterations for item price filter while calculating the discounts. [16/05/2024][Thanks to Sidney Nourry]
3.5.1
- Updating for the WordPress version. [17/01/2024][Thanks to gtcdesign]
3.5.0
- Fix: Uncaught Error: Call to a member function get_type() on bool. [19/05/2023][Thanks to Rafał Chełpa]
3.4.9
- Improved version for s2Member (Pro) plugin. [12/05/2023][Thanks to Rafał Chełpa]
3.4.8
- Improved version for s2Member (Pro) plugin. [19/04/2023][Thanks to Rafał Chełpa]
3.4.7
- Improved version for WordPress 6.0. [02/06/2022][Thanks to Toby Cryns]
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
- Improved version after in depth review by the plugin author and WordPress Plugin Review Team.
3.4.1
- Free version revised with qty. based discounts.
3.4.0
- Undefined property: stdClass::$post_type - fixed. [Thanks to eurostratos]
3.3.9
3.3.8
- Language translation files updated.
3.3.7
- Discount methods revised and tested to ensure accuracy. [Thanks to Stephen Russell]
3.3.6
- Uncaught Error: Call to a member function WC->session->get(), fixed. [Thanks to justinmyoung]
3.3.5
- Discount Label/Caption added on settings page. [Thanks to Don Paul]
3.3.4
- Settings page revised and discount value ensured in email. [Thanks to Don Paul]
3.3.3
- WC Membership compatibility revised. [Thanks to Team Ibulb Work and Yonasr]
3.3.2
- session_write_close() inserted after using session. [Thanks to egocefalo]
3.3.1
- Made easy to understand premium features. [Thanks to Abu Usman]
3.3.0
- Made easy to understand premium features. [Thanks to Abu Usman]
3.2.9
- Made easy to understand premium features.
3.2.8
- An improvement made in script. [Thanks to seighart]
3.2.7
- PHP warning on cart page. Fixed. [Thanks to seighart]
3.2.6
- Tabs introduced for better usability and added visual aids as well. [Thanks to Team Ibulb Work and AndroidBubbles]
3.2.5
- Updated and improved UI and UX.
3.2.4
- "Number of decimals" will control the decimal places in this plugin from this version onwards. [Thanks to Behnam Khan]
3.2.3
- Updated round of discounts on percentage. [Thanks to justinmyoung]
3.2.2
3.2.1
- Another PHP notice fixed. [Thanks to goedebuursilentdisco]
3.2.0
- Another PHP notice fixed.
3.1.9
- PHP notice fixed – Product properties should not be accessed directly. [Thanks to amiayu]
3.1.8
- Improved discount text in emails for percentage discount. [Thanks to collartags.com]
3.1.7
3.1.6
- Sprintf function issue fixed. [Thanks to donmcleman]
3.1.5
3.1.4
- Fixed a minor javascript file symbol issue. [Thanks to René Baade Pedersen]
3.1.3
3.1.2
- Pricing scale text is editable from settings page now. [Thanks to Don Paul]
3.1.1
- Warning: sprintf(): Too few arguments issue resolved. [Thanks to amiayu]
3.1.0
- %% issue resolved. [Thanks to patowins]
3.0.9
- Languages added. [Thanks to Abu Usman]
3.0.8
- WooCommerce get_cart() uncaught fatal error fixed on product page. [David Currie]
3.0.7
- WooCommerce Memberships compatibility added using class_exists check WC_Memberships_Loader. [David Currie]
3.0.6
- Flat discount > cart page > subtotal section correction. [David Currie]
3.0.5
- Flat discount updated price round float number format correction. [Thanks to Tom C]
3.0.4
- Flat discount updated price formula refined. [Thanks to Sadaf]
3.0.3
- Pricing scale turned ON by default. [Thanks to Sadaf Parvez]
3.0.2
- Fixed a few PHP notices regarding undefined variable and wrong usage of parent_id with product object. [Thanks to Sadaf Naz]
3.0.1
- Fixed a PHP notice regarding undefined variable unit price. [Thanks to mareklukas]
- Refined a few Premium features regarding weight based discounts. [Thanks to Ryan Chan]
3.0.0
- Fixed a PHP notice regarding undefined index 0. [Thanks to mareklukas]
- Fixed a Premium feature regarding settings page. [Thanks to Ryan Chan]
2.5.9
- Refined pricing scale display area and also fixed the decimal positions. [Thanks to cccnate]
2.5.8
- Refined and tested varitions discount criteria. [Thanks to Andrea Tarricone]
2.5.7
- Undefined constant WDP_PER_PRODUCT related warning fixed. [Thanks to Angelo]
- Protected function get_product_id call corrected. [Thanks to Konstantinos Zachos]
2.5.6
- Refined the varitions related discount aspect. [Thanks to Andrea Tarricone]
2.5.5
- Call to undefined method WC_Product_Simple::get_id() error fixed. Changes made in index.php on line 1054. [Thanks to Andrew]
2.5.4
- Discounts display on product page now added as an option in product page settings. [Thanks to Michiel]
2.5.3
- Category based discount feature refined and explained in the video tutorial again. [Thanks to Mouring Kolhoff]
2.5.2
- Added another compatibility with latest version of the WooCommerce. [Thanks to cathydol]
2.5.0
- s2member compatibility nonce related bug fixed. [Thanks to blastostitch]
2.4.9
- Display price issue in admin panel price column resolved. [Thanks to Dharmishtha Patel]
2.4.8
- WooCommerce > Cart Page > Old price was having 4 decimals > Fixed. [Thanks to Nate Melanson]
- Settings page > turn discounted price as display price on loop and single product pages. [Thanks to Breda McGuigan]
2.4.7
- User roles are added with multiple selection to ignore. If you don't want to allow a user role to get discounts. [Thanks to Jim Yow]
2.4.6
- Weight based discounts improved with multiple quantities. [Thanks to Dimitar Tsankov]
2.4.5
- Sanitized input and fixed direct file access issues.
2.4.4
- Discounts available with shipment conditions and can be restricted on user decision. [Thanks to Jon Siddall]
- Currency symbol position implemented as from WooCommerce settings page. [Thanks to grupa]
2.4.3
- Discounts available with shipment conditions. [Thanks to Jon Siddall]
- After discounts applied, prices were missing decimal values. Fixed. [Thanks to Greg Nowak]
2.4.2
- Weight based discounts introduced. [Thanks to Jon Siddall]
2.4.1
- Flat discounts refined for variable products. [Thanks to Paul Day]
2.4.0
2.3.8
- Discounts refined and new features added. [Thanks to Scott McClain]
2.3.7
- Refining conditions and settings.
2.3.6
- Checkout process refined. [Thanks to shameemali]
2.3.5
- Variable products refined. [Thanks to Scott McClain]
2.3.4
- An important Fatal Error fixed on report. [Thanks to actionarchery]
2.3.3
- A few warnings were reported and those are fixed. [Thanks to scottmcx]
2.3.2
- Variable products refined. [Thanks to Jocelyne]
2.3.1
- Flat discount refined. [Thanks to Andy]
2.3.0
- Global settings improved. [Thanks to Jose & Gabriela]
- Global discounts crieteria and per product discount criteria, both are in action at the same time from now.
- Discount on cart total quanity introduced this time as a new optional logic.
2.2.3
- Flat discount global settings refined. [Thanks to GP Themes Team]
2.2.2
- Flat discount per product refined. [Thanks to Paul & NemoPro]
2.2.1
- A minor issue fixed in flat discount per product. [Thanks to Paul Braoudakis]
2.2.0
- s2member compatibility added.
2.1.0
- A few important fixes. [Thanks to nextime]
2.0.3
- Discounted prices should not be considered for discount again.
2.0.2
- Discounted prices should not be considered for discount again.
2.0.1
- Discounted prices on cart page. [Thanks to Alois]
2.0
- Global settings are introduced and a useful widget for discounts detail under product short description. [Thanks to nameez]
1.0