WooCommerce Advanced Quantity Pricing (Custom Tiers)
Wordpress Plugin for only 3 products offer calculation in checkout
by Md. Anik Khan · github.com/codeanik/products-buying-offer-for-hygeena
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/codeanik/products-buying-offer-for-hygeena/archive/refs/heads/main.zipA WooCommerce plugin that adds advanced quantity-based pricing rules (per-unit or fixed-total tiers) with dynamic cart recalculation and on-page pricing tables.
Description
WooCommerce Advanced Quantity Pricing (Custom Tiers) enables flexible, product-specific quantity-based pricing rules. It supports two rule types:
- Unit Price: Define tiered per-unit pricing (e.g., 1 = $99, 2 = $95, 5+ = $79).
- Fixed Total: Define exact total amounts for certain quantities (e.g., 2 for $336), with optional scaling for higher quantities.
Each product’s pricing adjusts automatically in the cart and checkout. A pricing table is displayed on the product page to help customers understand discount tiers before purchase.
This plugin is ideal for merchants offering bulk discounts, wholesale pricing, or subscription bundle offers.
🔧 Features
- Create custom quantity pricing tiers per product ID.
- Supports two pricing modes:
- Unit-based pricing (per item)
- Fixed total pricing (for exact quantities)
- Option to extend the last rule for larger quantities.
- Automatically applies correct pricing in cart and checkout.
- Displays a pricing table on the product page.
- Compatible with WooCommerce fragments for instant mini-cart updates.
- Lightweight and fully compatible with any WooCommerce theme.
🧮 Example Configuration
private $rules = [
629 => [
'type' => 'unit_price',
'tiers' => [
['min' => 5, 'price' => 79],
['min' => 4, 'price' => 84],
['min' => 3, 'price' => 89],
['min' => 2, 'price' => 95],
['min' => 1, 'price' => 99],
],
],
985 => [
'type' => 'fixed_total',
'totals' => [
1 => 190,
2 => 336,
3 => 474,
],
'extend_last' => true,
],
];