| @@ -2,11 +2,11 @@ | ||
| 2 | 2 | |
| 3 | 3 | Contributors: bycrik, freemius |
| 4 | 4 | Tags: woocommerce, tiered pricing, dynamic price, price, wholesale |
| 5 | 5 | Requires at least: 5.0 |
| 6 | -Tested up to: 7.0 | |
| 6 | +Tested up to: 7.1 | |
| 7 | 7 | Requires PHP: 7.4 |
| 8 | -Stable tag: 6.4.0 | |
| 8 | +Stable tag: 8.0.2 | |
| 9 | 9 | License: GPLv2 or later |
| 10 | 10 | License URI: https://www.gnu.org/licenses/gpl-2.0.html |
| 11 | 11 | |
| 12 | 12 | Create bulk, wholesale, and quantity-based pricing in WooCommerce with flexible tables, role-based pricing, and powerful upsells. |
| @@ -16,13 +16,13 @@ | ||
| 16 | 16 | **Tiered Pricing Table for WooCommerce** lets you create bulk discounts, wholesale pricing, and quantity-based offers to increase average order value. |
| 17 | 17 | |
| 18 | 18 | Easily set different prices based on quantity, user roles, or specific customers — and display them using beautiful, customizable pricing tables, blocks, or dropdowns. |
| 19 | 19 | |
| 20 | -[youtube https://www.youtube.com/watch?v=wRyPr6VQHZM] | |
| 20 | +[youtube https://www.youtube.com/watch?v=MlyGAcfxaEQ] | |
| 21 | 21 | |
| 22 | 22 | [**Live Demo**](https://demo.tiered-pricing.com/) | [**Documentation**](https://tiered-pricing.com/documentation/user/) | [**Contact Us**](https://tiered-pricing.com/contact-us/) | [**Plugin Website**](https://tiered-pricing.com/) |
| 23 | 23 | |
| 24 | -**Tiered Pricing Table for WooCommerce** lets you easily set flexible pricing rules based on product quantity. You can apply custom pricing to individual products or categories, all users, specific user roles, or customer accounts. | |
| 24 | +You can apply custom pricing to individual products or categories, all users, specific user roles, or customer accounts. | |
| 25 | 25 | |
| 26 | 26 | Fine-tune pricing for any business model — from retail to wholesale — to serve different customer groups effortlessly. |
| 27 | 27 | |
| 28 | 28 | 📌 **Key features**: |
| @@ -27,24 +27,33 @@ | ||
| 27 | 27 | |
| 28 | 28 | 📌 **Key features**: |
| 29 | 29 | |
| 30 | 30 | ✅ **Quantity-based pricing (Volume pricing)** |
| 31 | -Set different prices for different quantities of products. | |
| 31 | +Offer different prices based on the quantity purchased to encourage larger orders. | |
| 32 | 32 | |
| 33 | -✅ **Role-based pricing** | |
| 34 | -Set different prices for user roles or specific customers, including quantity-based prices. | |
| 33 | +✅ **Role and Customer based pricing** | |
| 34 | +Create custom pricing for user roles or individual customers, including quantity-based discounts. | |
| 35 | 35 | |
| 36 | 36 | ✅ **Minimum, Maximum & Step Quantity Controls** |
| 37 | -Limit minimum, maximum, and quantity step a product can be purchased in. | |
| 37 | +Define minimum and maximum purchase quantities, and enforce quantity increments. | |
| 38 | 38 | |
| 39 | 39 | ✅ **Discount-friendly price formatting** |
| 40 | -Show the lowest price or range from the lowest to the highest price. | |
| 40 | +Display pricing in a way that highlights savings, including the lowest price, a price range or even a custom template. | |
| 41 | 41 | |
| 42 | +✅ **Request a Quote** | |
| 43 | +Allow customers to request a quote with customizable form builder and flexible settings. | |
| 44 | + | |
| 45 | +✅ **Wholesale registration & approval** | |
| 46 | +Let customers apply for a wholesale account with a customizable form, approve them in a queue, and give them the wholesale role automatically. Four e-mails keep everyone informed. | |
| 47 | + | |
| 48 | +✅ **Private store & catalog visibility** | |
| 49 | +Close the store to visitors, or show products and categories to selected roles only for wholesale-only or retail-only catalogs. | |
| 50 | + | |
| 42 | 51 | ✅ **Flexible pricing display (product page & catalog)** |
| 43 | - You can show the tiered prices via: | |
| 44 | -➖ **Table (5 different styles)** | |
| 45 | -➖ **Blocks (5 different styles)** | |
| 46 | -➖ **Options (4 different styles)** | |
| 52 | + Display tiered pricing in the format that best fits your store: | |
| 53 | +➖ **Table (5 styles)** | |
| 54 | +➖ **Blocks (5 styles)** | |
| 55 | +➖ **Options (4 styles)** | |
| 47 | 56 | ➖ **Dropdown** |
| 48 | 57 | ➖ **Horizontal Table** |
| 49 | 58 | ➖ **Plain text** |
| 50 | 59 | ➖ **Tooltip** |
| @@ -53,12 +62,13 @@ | ||
| 53 | 62 | The clean interface and powerful functionality allow you to create any pricing strategy without complexity. |
| 54 | 63 | |
| 55 | 64 | ⚙️ **Advanced Features** |
| 56 | 65 | ✅ Import & Export (WP All Import support). |
| 57 | -✅ Role management: create, edit, and delete user roles. | |
| 58 | -✅ Built-in caching for performance. | |
| 59 | -✅ REST API & debug mode. | |
| 60 | -✅ Show saving amount to users with the "You save: $9.99" template. (difference between original and discounted price). | |
| 66 | +✅ Pricing Labels – Create labels such as “Best Value” or “Most Popular” to make key pricing tiers stand out. | |
| 67 | +✅ Role Management – Create, edit, and delete user roles with ease. | |
| 68 | +✅ Built-in Caching – Improve performance with integrated caching. | |
| 69 | +✅ REST API & Debug Mode – Extend functionality through a REST API and troubleshoot issues with a dedicated debug mode. | |
| 70 | +✅ Savings Display – Show customers how much they save with customizable messages such as “You Save: $9.99”. | |
| 61 | 71 | |
| 62 | 72 | And much more! |
| 63 | 73 | |
| 64 | 74 | 💎 **Premium Extras**: |
| @@ -63,16 +73,17 @@ | ||
| 63 | 73 | |
| 64 | 74 | 💎 **Premium Extras**: |
| 65 | 75 | |
| 66 | 76 | * Percentage quantity-based discounts |
| 67 | -* Role-based pricing (including base prices and min/max order quantity) | |
| 77 | +* Role-based and customer-based pricing (including base prices and min/max order quantity) | |
| 68 | 78 | * Role-based tax options (Override tax options for specific user roles) |
| 69 | 79 | * Custom columns for pricing table |
| 70 | 80 | * Option to hide prices and prevent purchasing for non-logged-in users |
| 81 | +* Cart rules by role: a minimum order amount or quantity per role, payment and shipping methods limited to roles | |
| 71 | 82 | * Min/Max order quantity control per product or category/tag/brand |
| 72 | 83 | * Cart upsells (motivates users to purchase more to get a discount) |
| 73 | 84 | * Totals on the product page |
| 74 | -* Clickable tiered pricing options | |
| 85 | +* Clickable tiered pricing | |
| 75 | 86 | * Show the lowest price or a range of prices instead of default product price |
| 76 | 87 | * Show the tiered price in the cart as a discount |
| 77 | 88 | |
| 78 | 89 | **Works Seamlessly with 3rd-party plugins**: |
| @@ -102,12 +113,18 @@ | ||
| 102 | 113 | |
| 103 | 114 | == Screenshots == |
| 104 | 115 | |
| 105 | 116 | 1. Tiered Pricing on the product page |
| 106 | -2. Set up Tiered Pricing | |
| 107 | -3. Global pricing rules | |
| 108 | -4. Tiered Pricing in the cart | |
| 109 | -5. Tiered Pricing in the product catalog | |
| 117 | +2. Set up on the product-level | |
| 118 | +3. Global Pricing Rules | |
| 119 | +4. Shop and Catalog prices | |
| 120 | +5. Role-based Pricing | |
| 121 | +6. Quantity Limits (min/max/step) | |
| 122 | +7. Tiered Pricing in the cart and upsells | |
| 123 | +8. Custom Pricing Labels | |
| 124 | +9. Mix&Match Pricing Rules | |
| 125 | +10. Roles Management | |
| 126 | +11. 3rd-party Integrations | |
| 110 | 127 | |
| 111 | 128 | == Installation == |
| 112 | 129 | |
| 113 | 130 | 1. Upload the plugin files to the `/wp-content/plugins/tier-price-table` directory, or install the plugin through the WordPress plugins screen directly. |
| @@ -162,8 +179,120 @@ | ||
| 162 | 179 | Yes! |
| 163 | 180 | Each order has the "recalculate with tiered pricing" button, which recalculates the cost according to the tiered pricing rules. |
| 164 | 181 | |
| 165 | 182 | == Changelog == |
| 183 | + | |
| 184 | += 8.0.2 [2026-09-24] = | |
| 185 | +* New: the catalog quantity box now works with the Product Button block too (Product Collection, block themes): it sits next to the button, the button adds the typed quantity, and Enter in the box adds to the cart. | |
| 186 | +* Improvement: in the catalog the quantity box and the add-to-cart button share one line, with the button filling the rest of the row. | |
| 187 | +* Improvement: no space above the catalog pricing and 20px below it, so the price and the tiers sit together in the product card. | |
| 188 | +* Fix: block themes showed the catalog pricing, the badge and the quantity box a second time outside the product card's layout, which stretched the card; WooCommerce fires the classic loop hooks inside product template blocks as well, and the plugin now renders through the blocks only. | |
| 189 | +* Fix: the catalog pricing and the badge no longer appear on the single product page of block themes, whose template uses the same blocks. | |
| 190 | +* Fix: the integrated "Request a quote" row of the table layouts spans every column when custom columns are added to the table. | |
| 191 | + | |
| 192 | += 8.0.1 [2026-09-23] = | |
| 193 | +* Improvement: PHP 8.1+ code compatibility: htmlspecialchars() and html_entity_decode() calls pass explicit flags (WooCommerce QIT code compatibility test). | |
| 194 | +* Fix: the plugin no longer clears the "section" parameter on other WooCommerce settings tabs; since 7.2.0 this broke the REST API keys screen and saving webhooks, and could affect tax and shipping sections. | |
| 195 | +* Improvement: security hardening from the WooCommerce QIT audit: every layout template output is escaped, server and request variables are sanitized, the plain-text quote e-mails escape field values, and the quote request endpoint verifies the REST nonce in its permission callback unless reCAPTCHA is configured. | |
| 196 | + | |
| 197 | += 8.0.0 [2026-09-23] = | |
| 198 | +* New: wholesale registration and approval, part of the "Non-Logged-In Users" module, now called "Wholesale & Guest Users": an application form via the [tiered_pricing_wholesale_registration] shortcode with a form builder (add, reorder and remove fields; label, type and required per field; text, paragraph, phone, e-mail, website, number, dropdown and checkbox types), an approval queue under WooCommerce → Wholesale Applications with approve, reject and bulk actions, automatic or manual approval, four WooCommerce e-mails (new application, received, approved, rejected), an "Apply for a wholesale account" link on the login form, a login redirect for wholesale customers, an optional terms checkbox, a honeypot and reCAPTCHA v3 with its own keys. Switched on under the new Wholesale settings tab. | |
| 199 | +* New: private store, off by default. "Closed store" sends visitors to the login page except for My Account, the wholesale registration page and chosen pages. "Catalog visibility by role" adds a "Who can see" rule to every product and product category (everyone, only selected roles, everyone except selected roles; guests count as a role) for wholesale-only or retail-only catalogs. Hidden products leave the shop, search, related, upsell and cross-sell lists, menus, the sitemap and the Store API, cannot be bought, and their pages send guests to the login page or show a not-found page; hidden categories leave category lists, menus and their archives. The products list and the product categories list show a "Who can see" column, and the products list can be filtered by it. | |
| 200 | +* New: cart rules by role (premium), off by default: a minimum order amount or quantity for the whole cart per role (guests count as a role, the strictest minimum applies), enforced in the cart and at checkout for the classic pages and the blocks with editable messages; and payment methods and shipping methods limited to selected roles, for example invoice payment for wholesale customers only or free shipping for retail only. | |
| 201 | +* Improvement: the Guest Users options (hide prices, require login to purchase) moved from the General tab to the Wholesale tab, next to the other B2B settings; both belong to the same module now. | |
| 202 | +* Improvement: the Tools tab merged into the Modules tab, now called Advanced: modules, roles management, data clean-up, cache and debug in one place. Old links to the Tools tab still open it. | |
| 203 | +* Improvement: the experimental "WooCommerce Product Editor integration" module is no longer listed under Modules; a store that switched it on keeps it. | |
| 204 | +* Fix: table design styles #1 to #6 no longer break a quantity range onto two lines when a tier label sits in the row; the label wraps under the quantity instead. | |
| 205 | + | |
| 206 | += 7.2.0 [2026-09-23] = | |
| 207 | +* New: layout configurator with a live preview, for the product page, shop & category pages and the cart. Every layout, style, text and colour option in one place. It is an add-on: switch it off to get the classic settings rows back. | |
| 208 | +* New: design styles: table "minimal" (#1) and "savings bar" (#5), blocks "cards" (#7) and "segmented" (#8), options "plan picker" (#4), "list with savings bar" (#5) and "steps" (#6), dropdown "pill" (#1), plain text "check list" (#1) and "one line" (#2). The former table style #1 is now #6. | |
| 209 | +* New: layout options: discount format (percentage, amount or both), tier order, spacing, cell padding, discount badge colour, active tier left border. | |
| 210 | +* New: shop & category pages: a bulk savings badge on the product image, "Where it shows" (product lists and categories), Product Collection block support, and tiers per grid item with a "+N more" link. | |
| 211 | +* New: cart: the quantity in the upsell message is a one-click link to the next tier, an optional progress bar under it, and a "Total savings" row in the cart totals and the classic checkout. | |
| 212 | +* Improvement: single-choice settings are chips with examples, the price calculation options show Off/On examples, and the text template editor is lighter. | |
| 213 | +* Improvement: the "Show total price" options are free now. | |
| 214 | +* Improvement: the Calculations tab is now the Price Calculation group on the General tab; Cache and Debug moved to the Tools tab. | |
| 215 | +* Improvement: the "nowhere" position is gone; an existing "nowhere" setting behaves as automatic display switched off. | |
| 216 | +* Improvement: default table cell padding for themes that leave cells unpadded, smaller badges in the compact layout, and new default texts for the "You Save" badge and the cart upsell message. | |
| 217 | +* Fix: no crossed-out price and no "0% off" badge for a tier priced at the regular price. | |
| 218 | +* Fix: quantity ranges use the site's number format and never show equal ends; the base row's unit name is singular for a minimum of 1. | |
| 219 | +* Fix: table styles #2 and #6 tint the active row from the active tier colour without shifting it. | |
| 220 | +* Fix: the dropdown starts with the base option selected and keyboard navigation focuses it; the Request a Quote prompt renders under the list. | |
| 221 | +* Fix: the horizontal table's Request a Quote column keeps the row count with custom columns or without the discount row. | |
| 222 | + | |
| 223 | += 7.1.8 [2026-09-08] = | |
| 224 | +* Fix: the Request a Quote form did not open for variations of products with more variations than the AJAX threshold. | |
| 225 | +* Fix: the catalog price of variable products could lose its prefix or format when an SEO integration formatted the price first with caching enabled. | |
| 226 | +* Fix: the "Purge cache" button did nothing while caching was disabled, and its success notice could be lost. | |
| 227 | + | |
| 228 | += 7.1.7 [2026-09-02] = | |
| 229 | +* New: U2Code Multicurrency integration | |
| 230 | +* New: Multicurrency and Product Addons settings sections — show the detected plugin of each kind, the state of its integration, and the matching U2Code plugin | |
| 231 | +* New: Mix & Match settings section with an option to apply tiered pricing to the products inside Mix and Match containers (per-item pricing) | |
| 232 | +* Improvement: settings tabs are now ordered consistently — configuration first, then display, features, modules, integrations, and Tools last | |
| 233 | +* Fix: the maximum order quantity was enforced as half of the configured value in the WooCommerce block cart (Store API) | |
| 234 | +* Fix: a pricing rule matching a Mix and Match container re-priced the container itself on top of its contents | |
| 235 | + | |
| 236 | += 7.1.6 [2026-08-25] = | |
| 237 | +* New: dedicated integration with U2Code Product Addons — the new "U2Code plugins" section on the integrations page | |
| 238 | +* New: recommendations tip for product options in the product's Tiered Pricing tab | |
| 239 | +* Improvement: integrations page redesign with official-plugin cards | |
| 240 | + | |
| 241 | += 7.1.5 [2026-08-14] = | |
| 242 | +* Fix: percentage tiered prices were calculated from a price WooCommerce Subscriptions had already modified, which double-prorated the first payment of synchronised subscriptions and mis-applied sign-up fees and free trials. | |
| 243 | +* Fix: the prorated cost of a subscription quantity switch ignored the tiered discount, overcharging the customer. | |
| 244 | + | |
| 245 | += 7.1.4 [2026-08-13] = | |
| 246 | +* Fix: cart prices ignored the exchange rate with the WPML Multicurrency integration (regression in 7.1.3). | |
| 247 | + | |
| 248 | += 7.1.3 [2026-08-09] = | |
| 249 | +* New: WooCommerce Subscriptions integration — tiered pricing now applies correctly to products purchased on a subscription plan, in both the initial and recurring totals. | |
| 250 | +* New: YITH Multi Currency Switcher integration. | |
| 251 | +* New: WPML/Polylang support for role-based and user-based tiered pricing on product translations. | |
| 252 | +* Enhance: Global tiered pricing rules now match products, categories, tags and brands across WPML/Polylang translations. | |
| 253 | +* Fix: Prevented two possible fatal errors — a null product passed into the price filter by third-party code, and re-calculating a manual order whose product had been deleted. | |
| 254 | +* Fix: A 100%-off tier could be charged at full price when re-calculating manual orders. | |
| 255 | +* Fix: WCCS, YITH and WPML currency switchers could convert percentage-based tiered prices twice. | |
| 256 | +* Fix: Product add-on costs were dropped from the cart price when a currency switcher was active. | |
| 257 | +* Fix: Division-by-zero warning in the WooCommerce Deposits integration. | |
| 258 | +* Fix: SEO structured data (Rank Math, Yoast, SEOPress) declared more offers than it output; the SEOPress price-range tag showed the lowest price instead of a range. | |
| 259 | + | |
| 260 | += 7.1.2 [2026-08-06] = | |
| 261 | +* Enhance: Product Bundles integration for manually created orders. | |
| 262 | +* Fix: WPML Multicurrency rounding rules were not applied to tiered prices. | |
| 263 | +* Fix: Tiered price in the cart was converted twice by currency switchers after decreasing the quantity below the first tier. | |
| 264 | +* Fix: Prices with taxes for the products without tiered pricing rules. | |
| 265 | + | |
| 266 | += 7.1.1 [2026-07-29] = | |
| 267 | +* Fix: frontend JS issue with totals. | |
| 268 | + | |
| 269 | += 7.1.0 [2026-07-27] = | |
| 270 | +* New: Mix&Match minimum order quantity for variable products. | |
| 271 | +* New: Woo Payment Multicurrency integration. | |
| 272 | +* Enhance: Move role-based and customer-based pricing to a separate tab. | |
| 273 | +* Enhance: Settings texts and descriptions updated. | |
| 274 | +* Fix: Minor fixes and improvements. | |
| 275 | + | |
| 276 | += 7.0.1 [2026-07-20] = | |
| 277 | +* Fix: Frontend script cache issue. | |
| 278 | + | |
| 279 | += 7.0.0 [2026-07-18] = | |
| 280 | +* New: Request a Quote functionality. | |
| 281 | +* New: Totals & "You save" feature for the products without tiered pricing rules. | |
| 282 | +* Enhance: Dropdown accessibility. | |
| 283 | + | |
| 284 | += 6.5.0 [2026-07-02] = | |
| 285 | +* New: Product level customer based pricing. | |
| 286 | +* New: Custom template for pricing formatting on the shop page. | |
| 287 | +* Enhance: CSS improvements. | |
| 288 | + | |
| 289 | += 6.4.1 [2026-07-01] = | |
| 290 | +* Fix: MCE JS issue in some languages. | |
| 291 | +* Enhance: tier labels and custom columns friendly UI. | |
| 292 | +* Enhance: Welcome page updated. | |
| 293 | +* Enhance: Compact layout for all pricing templates. | |
| 294 | +* Enhance: Import/Export as a module and can be deactivated. | |
| 166 | 295 | |
| 167 | 296 | = 6.4.0 [2026-06-21] = |
| 168 | 297 | * New: 4 new styles for pricing table. |
| 169 | 298 | * Enhance: custom columns work for horizontal table template. |