Files
wc-tier-and-package-prices/README.md
magdev 87784f467a Release version 1.2.0 - Add complete variable product support
This major feature release adds full support for WooCommerce variable products with variation-level pricing configuration.

## Key Features
- Each product variation can have independent tier and package pricing
- AJAX-based dynamic pricing table loading on variation selection
- Admin UI integrated into WooCommerce variation panels
- Full backward compatibility with existing simple product functionality
- WooCommerce Blocks compatibility maintained

## Implementation Highlights
- Effective ID pattern throughout codebase for variation handling
- Variation-specific meta boxes with field prefix support
- Template system updated to support both simple and variation products
- JavaScript enhancements for variation selector integration
- Cart logic updated to handle variation pricing correctly

## Files Changed
- Core: wc-tier-and-package-prices.php (version 1.2.0), composer.json
- Cart: includes/class-wc-tpp-cart.php (effective ID logic)
- Frontend: includes/class-wc-tpp-frontend.php (AJAX endpoint, variation detection)
- Admin: includes/class-wc-tpp-product-meta.php (variation hooks and methods)
- Templates: templates/admin/*.twig (field prefix support, table structure)
- JavaScript: assets/js/*.js (variation support)
- Documentation: CHANGELOG.md, README.md, CLAUDE.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-29 20:02:03 +01:00

248 lines
9.3 KiB
Markdown

# WooCommerce Tier and Package Prices
__THIS PROJECT IS 100% VIBE-CODED USING CLAUDE.AI__
A powerful WooCommerce plugin that adds tier pricing and package pricing functionality to your products with configurable quantities at fixed prices.
## Features
### Tier Pricing (Volume Discounts)
- Set quantity-based pricing tiers
- Automatic discounts when customers buy in larger quantities
- Display savings percentage and amount
- Dynamically updates price based on quantity selected
### Package Pricing
- Create fixed-price packages with specific quantities
- Example: 10 pieces for $50, 25 pieces for $100
- Custom labels for packages (e.g., "Starter Pack", "Value Bundle")
- One-click package selection on product pages
### Admin Features
- Easy-to-use product meta boxes for adding tiers and packages
- Global settings page under WooCommerce menu
- Configure display position (before/after add to cart, after price)
- Enable/disable tier or package pricing independently
- Sortable pricing rules
### Frontend Features
- Beautiful pricing tables on product pages
- Responsive design for mobile devices
- Visual highlighting of active tier/package
- Real-time price updates when quantity changes
- Cart integration with proper price calculations
- Clear pricing indicators in cart
## Installation
1. Upload the `wc-tier-and-package-prices` folder to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Make sure WooCommerce is installed and activated
## Configuration
### Global Settings
Navigate to **WooCommerce > Tier & Package Prices** to configure:
- **Enable Tier Pricing**: Turn on/off volume discounts
- **Enable Package Pricing**: Turn on/off fixed-price packages
- **Display Pricing Table**: Show/hide pricing tables on product pages
- **Display Position**: Choose where to show pricing tables
### Product Settings
When editing a product, scroll to the **Product data** panel:
1. Click on the **General** tab
2. Scroll down to find **Tier Pricing** and **Package Pricing** sections
#### Adding Tier Pricing
1. Click "Add Tier" button
2. Set minimum quantity (e.g., 10)
3. Set price per unit (e.g., 9.99)
4. Add more tiers as needed
5. Tiers are automatically sorted by quantity
**Example:**
- 1-9 items: $12.00 each (regular price)
- 10-24 items: $10.00 each (tier 1)
- 25-49 items: $8.50 each (tier 2)
- 50+ items: $7.00 each (tier 3)
#### Adding Package Pricing
1. Click "Add Package" button
2. Set exact quantity (e.g., 10)
3. Set fixed price for that quantity (e.g., 99.99)
4. Optionally add a custom label (e.g., "Starter Pack")
5. Add more packages as needed
**Example:**
- Package 1: 10 pieces for $95 (labeled "Small Bundle")
- Package 2: 25 pieces for $200 (labeled "Value Pack")
- Package 3: 50 pieces for $350 (labeled "Business Pack")
## How It Works
### Price Calculation Priority
1. **Package Price** (highest priority): If the exact quantity matches a package, the package price applies
2. **Tier Price**: If no package match, the highest applicable tier price is used
3. **Regular Price**: If no tier or package applies, the regular product price is used
### Frontend Display
- Pricing tables show all available tiers and packages
- Current tier/package is highlighted based on selected quantity
- Prices update dynamically when quantity changes
- Package buttons allow one-click quantity selection
### Cart Behavior
- Correct prices are applied in the cart
- Cart shows whether tier or package pricing is applied
- Subtotals are calculated correctly
- Compatible with WooCommerce checkout process
## File Structure
```
wc-tier-and-package-prices/
├── wc-tier-and-package-prices.php # Main plugin file (v1.1.20)
├── includes/
│ ├── class-wc-tpp-admin.php # Admin settings integration
│ ├── class-wc-tpp-settings.php # WooCommerce settings page
│ ├── class-wc-tpp-product-meta.php # Product meta boxes
│ ├── class-wc-tpp-frontend.php # Frontend display logic
│ ├── class-wc-tpp-cart.php # Cart price calculations
│ └── class-wc-tpp-template-loader.php # Twig template engine
├── templates/
│ ├── admin/
│ │ ├── tier-row.twig # Tier pricing input row
│ │ └── package-row.twig # Package pricing input row
│ └── frontend/
│ ├── pricing-table.twig # Main pricing display wrapper
│ ├── tier-pricing-table.twig # Tier pricing table
│ └── package-pricing-display.twig # Package selection UI
├── assets/
│ ├── css/
│ │ ├── admin.css # Admin styles
│ │ └── frontend.css # Frontend styles
│ └── js/
│ ├── admin.js # Admin JavaScript
│ └── frontend.js # Frontend JavaScript
├── languages/
│ ├── wc-tier-package-prices.pot # Translation template
│ ├── wc-tier-package-prices-*.po # Translation sources
│ └── wc-tier-package-prices-*.mo # Compiled translations
├── vendor/ # Composer dependencies (Twig)
├── CHANGELOG.md # Complete version history
├── INSTALLATION.md # Installation guide
├── QUICKSTART.md # Quick start guide
├── USAGE_EXAMPLES.md # Usage examples
└── README.md # This file
```
## Requirements
- WordPress 6.0 or higher (tested up to 6.9.x)
- WooCommerce 8.0 or higher (tested up to 10.x)
- PHP 7.4 or higher
### Compatibility
-**WooCommerce 10.x**: Fully compatible with the latest WooCommerce release
-**WordPress 6.9.x**: Tested and verified with WordPress 6.9.x
-**HPOS (High-Performance Order Storage)**: Full support for WooCommerce Custom Order Tables
-**Block-based Themes**: Compatible with modern WordPress block themes
-**Multisite**: Works on WordPress multisite installations
## Frequently Asked Questions
**Q: Can I use both tier pricing and package pricing on the same product?**
A: Yes! Package pricing takes priority when the exact quantity matches.
**Q: What happens if a customer changes the quantity in the cart?**
A: The price will automatically recalculate based on the new quantity.
**Q: Can I set different tiers for different products?**
A: Yes, each product can have its own tier and package pricing configuration.
**Q: Does this work with variable products?**
A: Yes! Since version 1.2.0, the plugin fully supports variable products. Each variation can have its own independent tier and package pricing configuration.
## Support
For bug reports and feature requests, please use the plugin's support forum or contact the developer.
## License
This plugin is licensed under the GPL v2 or later.
## Changelog
### Version 1.2.0 - 2025-12-29
__Current Release__ - Variable Product Support
- __New__: Full support for WooCommerce variable products with variation-level pricing
- __New__: Each variation can have independent tier and package pricing configuration
- __New__: AJAX-powered dynamic pricing table display when variations are selected
- __Changed__: Admin templates converted to table structure for better layout
- __Fixed__: Quantity restrictions now work correctly per-variation
- 100% backward compatible - no breaking changes
See [CHANGELOG.md](CHANGELOG.md) for complete details.
### Version 1.1.22 - 2025-12-23
- Increased width of label input fields in admin interface
#### Fixed
- **CRITICAL:** WooCommerce Blocks fatal error in mini-cart and cart blocks
- Fixed `woocommerce_store_api_product_quantity_editable` filter signature mismatch
- Filter now correctly accepts `WC_Product` object instead of cart item array
- Resolves "Cannot use object of type WC_Product_Simple as array" fatal error
#### Technical Details
- Updated `block_quantity_editable()` method signature to accept product object
- Changed parameter from `$cart_item` array to `WC_Product $product`
- Uses `$product->get_id()` instead of array access for product ID
- Full compatibility with WooCommerce Store API and block-based cart/checkout
### Recent Major Updates
#### Version 1.1.7 - Enhanced Tier Pricing
- Added optional text labels for tier pricing
- Clickable tier rows that auto-populate quantity field
- Add to Cart button auto-disable when quantity is invalid
#### Version 1.1.4 - WooCommerce Blocks Support
- Full support for WooCommerce block-based cart and checkout
- Quantity restrictions work with both classic and block carts
- Enhanced "View Options" button styling
#### Version 1.1.0 - Package Quantity Restrictions
- Global and per-product package quantity restrictions
- Prevents customers from ordering non-package quantities
- Automatic quantity field hiding when restrictions enabled
#### Version 1.0.1 - Twig Template Engine
- Migrated to Twig templating system
- Enhanced security with automatic HTML escaping
- Added German (Switzerland, Informal) translation
#### Version 1.0.0 - Initial Release
- Tier pricing functionality (quantity-based discounts)
- Package pricing functionality (fixed-price bundles)
- WooCommerce HPOS compatibility
- Multilingual support (English, German)
For complete version history, see [CHANGELOG.md](CHANGELOG.md)
## Credits
Developed by Marco Graetsch for WooCommerce store owners who need flexible pricing options.