{"id":334346,"date":"2026-07-05T06:44:11","date_gmt":"2026-07-05T06:44:11","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tiers-quantity-discounts-for-woocommerce\/"},"modified":"2026-07-05T11:00:46","modified_gmt":"2026-07-05T11:00:46","slug":"plogins-tiers","status":"publish","type":"plugin","link":"https:\/\/pl.wordpress.org\/plugins\/plogins-tiers\/","author":108511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.4","stable_tag":"0.2.4","tested":"7.0","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Plogins Tiers - Tiered Pricing for WooCommerce","header_author":"WPPoland.com","header_description":"Volume and quantity-based tiered pricing for WooCommerce","assets_banners_color":"b4b6de","last_updated":"2026-07-05 11:00:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plogins.com\/plogins-tiers\/","header_author_uri":"https:\/\/wppoland.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.2":{"tag":"0.2.2","author":"motylanogha","date":"2026-07-05 06:43:37"},"0.2.3":{"tag":"0.2.3","author":"motylanogha","date":"2026-07-05 07:44:20"},"0.2.4":{"tag":"0.2.4","author":"motylanogha","date":"2026-07-05 11:00:46"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3596429,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3596429,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3596429,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3596429,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"tiers\/tiers-table":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"tiers\/tiers-table","version":"0.2.0","title":"Volume pricing table","category":"woocommerce","icon":"editor-table","description":"Server-rendered volume pricing table for the current or a chosen WooCommerce product.","keywords":["woocommerce","pricing","tiers","volume","quantity"],"textdomain":"tiers","supports":{"html":false,"align":["wide","full"]},"attributes":{"productId":{"type":"number","default":0}},"editorScript":"file:.\/index.js"}},"tagged_versions":["0.2.2","0.2.3","0.2.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3596429,"resolution":"1","location":"assets","locale":"","width":1600,"height":1200},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3596429,"resolution":"2","location":"assets","locale":"","width":1600,"height":1200}},"screenshots":{"1":"Volume pricing table on a product page, shows quantity ranges, discount percentages, and resulting prices.","2":"Admin settings page, tier builder with add\/remove rows and a show\/hide table toggle."}},"plugin_section":[],"plugin_tags":[243190,243191,166977,224610,286],"plugin_category":[45],"plugin_contributors":[264912],"plugin_business_model":[],"class_list":["post-334346","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-pricing","plugin_tags-quantity-discount","plugin_tags-tiered-pricing","plugin_tags-volume-pricing","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-motylanogha","plugin_committers-motylanogha"],"banners":{"banner":"https:\/\/ps.w.org\/plogins-tiers\/assets\/banner-772x250.png?rev=3596429","banner_2x":"https:\/\/ps.w.org\/plogins-tiers\/assets\/banner-1544x500.png?rev=3596429","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plogins-tiers\/assets\/icon-128x128.png?rev=3596429","icon_2x":"https:\/\/ps.w.org\/plogins-tiers\/assets\/icon-256x256.png?rev=3596429","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/plogins-tiers\/assets\/screenshot-1.png?rev=3596429","caption":"Tabela cen hurtowych na stronie produktu, pokazuj\u0105ca zakresy ilo\u015bci, procenty rabatu i wynikowe ceny."},{"src":"https:\/\/ps.w.org\/plogins-tiers\/assets\/screenshot-2.png?rev=3596429","caption":"Strona ustawie\u0144 w panelu administracyjnym, kreator prog\u00f3w z dodawaniem\/usuwaniem wierszy i prze\u0142\u0105cznikiem pokazywania\/ukrywania tabeli."}],"raw_content":"<!--section=description-->\n<p>Tiers gives a WooCommerce store quantity-based pricing. You set the breakpoints, buy 5, save 5%; buy 10, save 10%, and the discount is taken off the line item the moment a shopper carts enough units. The same breakpoints are shown as a table on the product page so people can see the price they'd pay before they add to cart.<\/p>\n\n<p>The discount is calculated in PHP on <code>woocommerce_before_calculate_totals<\/code>, so the pricing logic ships no front-end JavaScript. The product-page table is a plain HTML <code>&lt;table&gt;<\/code> printed server-side with <code>&lt;th scope&gt;<\/code> and a <code>&lt;caption&gt;<\/code>, so it reads correctly to screen readers and doesn't shift the layout as the page loads.<\/p>\n\n<p>When a quantity matches more than one tier, the deepest qualifying tier applies, 12 units takes the \"10+\" price, not the \"5+\" price. Tiers never raises a price either, so a product that's already on sale keeps its lower price.<\/p>\n\n<p>Tiers declares compatibility with WooCommerce HPOS and the Cart\/Checkout Blocks. It stores everything in a single <code>wp_options<\/code> row and creates no custom tables, so deleting the plugin leaves the database as it was.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>Any number of global pricing tiers, each a minimum quantity and a discount percentage (with an optional label)<\/li>\n<li>Automatic discounting in the cart, with the highest matching tier winning<\/li>\n<li>A pricing table on single product pages, with a choice of where it appears: product summary, before or after the add-to-cart form, the product meta area, or nowhere automatic<\/li>\n<li>A <code>[tiers_table]<\/code> shortcode and a \"Volume pricing table\" block for dropping the table in by hand<\/li>\n<li>An optional heading above the table and an optional \"You save\" column<\/li>\n<li>An optional \"You save\" note under each discounted line in the cart<\/li>\n<li>An admin tier builder that adds and removes rows in place, with a live preview of how each tier reads<\/li>\n<li>A Polish translation, plus a bundled POT file for translating into other languages (text domain <code>tiers<\/code>)<\/li>\n<li>A <code>tiers_product_tiers<\/code> filter that lets Tiers PRO swap in per-product or role-based tiers<\/li>\n<\/ul>\n\n<p><strong>Documentation:<\/strong> https:\/\/plogins.com\/tiers\/docs\/<\/p>\n\n<h4>You may also like these plugins<\/h4>\n\n<p>More free WooCommerce plugins from WPPoland:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/plogins-waitlist\/\">Plogins Waitlist<\/a> - back-in-stock waitlist that emails shoppers the moment a product returns.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/sieve\/\">Sieve - Search &amp; Filter<\/a> - fast AJAX product search and filtering for WooCommerce, with no jQuery.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/polski\/\">Polski for WooCommerce<\/a> - Polish-market compliance: GPSR, Omnibus, GDPR, invoices and storefront modules.<\/li>\n<\/ul>\n\n<p>Browse the full catalogue at https:\/\/plogins.com\/ .<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Tiers does not connect to any external services. Pricing tiers are stored in a single <code>tiers_settings<\/code> row in your WordPress options table, and the discount is calculated in PHP on your own server, no data ever leaves your site. The plugin sends no email and makes no remote requests; the product-page pricing table is rendered locally from those stored tiers.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Tiers is developed in the open. The PHP, JS, and CSS you install are the same files in the repository, nothing is minified or generated by a build step. Read the code, file a bug, or send a patch at https:\/\/github.com\/wppoland\/plogins-tiers.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce (8.0 or later).<\/li>\n<li>Upload the <code>tiers<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or grab a copy from https:\/\/github.com\/wppoland\/plogins-tiers.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Tiers<\/strong> and add at least one pricing tier (e.g. 5 units \u2192 5% off).<\/li>\n<li>The pricing table appears automatically on product pages, and discounts apply in the cart.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"documentation%20and%20links\"><h3>Documentation and links<\/h3><\/dt>\n<dd><ul>\n<li><strong>Documentation<\/strong> - https:\/\/plogins.com\/tiers\/docs\/<\/li>\n<li><strong>Plugin page<\/strong> - https:\/\/plogins.com\/tiers\/<\/li>\n<li><strong>Source code<\/strong> - https:\/\/github.com\/wppoland\/plogins-tiers<\/li>\n<li><strong>Bug reports and feature requests<\/strong> - https:\/\/github.com\/wppoland\/plogins-tiers\/issues<\/li>\n<\/ul><\/dd>\n<dt id=\"does%20tiers%20require%20woocommerce%3F\"><h3>Does Tiers require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Tiers is a WooCommerce extension and requires WooCommerce 8.0 or later.<\/p><\/dd>\n<dt id=\"does%20the%20pricing%20table%20reload%20the%20page%3F\"><h3>Does the pricing table reload the page?<\/h3><\/dt>\n<dd><p>No. The pricing table is server-rendered, it loads with the page, before any JavaScript runs. There is no AJAX or hydration step.<\/p><\/dd>\n<dt id=\"how%20does%20the%20%22highest%20tier%20wins%22%20logic%20work%3F\"><h3>How does the \"highest tier wins\" logic work?<\/h3><\/dt>\n<dd><p>If a customer has 12 units of a product in their cart, and you have tiers for \"5+\" (5% off) and \"10+\" (10% off), they receive 10% off. The tiers are evaluated from lowest to highest min_qty and the last match wins.<\/p><\/dd>\n<dt id=\"can%20i%20apply%20different%20tiers%20to%20different%20products%3F\"><h3>Can I apply different tiers to different products?<\/h3><\/dt>\n<dd><p>In the free version, tiers are global (applied to all products). Tiers PRO adds per-product tier overrides via the product edit screen.<\/p><\/dd>\n<dt id=\"are%20discounts%20compatible%20with%20woocommerce%20coupons%3F\"><h3>Are discounts compatible with WooCommerce coupons?<\/h3><\/dt>\n<dd><p>Yes. Tiers modifies the cart line-item price before WooCommerce calculates totals, so standard WooCommerce coupons work normally on top of the tiered price.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Discounts stop being applied and the pricing table no longer appears. Your settings are retained in the database.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>The uninstall routine removes the <code>tiers_settings<\/code> option. No custom tables are created, so your database is left clean.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20taxes%3F\"><h3>Does it work with taxes?<\/h3><\/dt>\n<dd><p>Yes. Tiers modifies prices before WooCommerce's tax calculation, so WooCommerce's own tax logic applies to the discounted price.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20wordpress%20multisite%3F\"><h3>Does this plugin work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. This plugin is compatible with WordPress Multisite. Network activate it or activate it on individual sites; each site keeps its own settings and data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.4<\/h4>\n\n<ul>\n<li>Docs: added a \"You may also like\" section linking the other free WPPoland WooCommerce plugins. No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>New: Elementor widget for the volume pricing table (works on Elementor 3.x and 4.0).<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Packaging: exclude the .wordpress-org assets directory from the plugin download (WordPress.org SVN assets only). No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Renamed to Plogins Tiers for WooCommerce for a more distinctive plugin name.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: configurable table placement (product summary, before\/after add-to-cart form, product meta, or manual only).<\/li>\n<li>New: <code>[tiers_table]<\/code> shortcode and a \"Volume pricing table\" block for placing the table anywhere.<\/li>\n<li>New: optional custom table heading.<\/li>\n<li>New: optional \"You save\" column in the pricing table.<\/li>\n<li>New: optional per-line \"You save\" note in the cart.<\/li>\n<li>New: translation support, with a Domain Path of <code>\/languages<\/code>, a bundled <code>tiers.pot<\/code>, and a Polish translation.<\/li>\n<li>Fix: define the missing <code>Tiers\\PLUGIN_DIR<\/code> constant so the plugin boots reliably.<\/li>\n<li>Housekeeping: removed an unused template; expanded coding-standards coverage to templates and blocks.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: global volume pricing tiers, server-rendered pricing table on product pages, admin tier builder, <code>tiers\/product_tiers<\/code> filter for PRO overrides. No jQuery, no layout shift, WCAG 2.2 AA.<\/li>\n<\/ul>","raw_excerpt":"Volume pricing tiers for WooCommerce. Set quantity discount bands and show a server-rendered pricing table on product pages. No jQuery.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334346"}],"author":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/motylanogha"}],"wp:attachment":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334346"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334346"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334346"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334346"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334346"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}