You've already forked wc-tier-and-package-prices
346 lines
11 KiB
Markdown
346 lines
11 KiB
Markdown
|
|
# WooCommerce Tier and Package Prices - Release 1.1.0
|
||
|
|
|
||
|
|
**Release Date:** December 21, 2025
|
||
|
|
**Version:** 1.1.0
|
||
|
|
**Package Size:** 387 KB
|
||
|
|
**Git Tag:** v1.1.0
|
||
|
|
|
||
|
|
## Download
|
||
|
|
|
||
|
|
**File:** `wc-tier-and-package-prices-1.1.0.zip`
|
||
|
|
|
||
|
|
### Checksums
|
||
|
|
|
||
|
|
**SHA256:**
|
||
|
|
```
|
||
|
|
da6b462f3dc297b282ed0da258b78fd9f2f82f3e76289c4c8fadd1ac9e02c55b
|
||
|
|
```
|
||
|
|
|
||
|
|
**MD5:**
|
||
|
|
```
|
||
|
|
ef68125c54b0c10f04ba82d48a98b4aa
|
||
|
|
```
|
||
|
|
|
||
|
|
## What's New in 1.1.0
|
||
|
|
|
||
|
|
### Major Features
|
||
|
|
- ✨ **Package Quantity Restriction** - NEW
|
||
|
|
- Limit product purchases to predefined package sizes only
|
||
|
|
- Perfect for bulk-only sales, sample packs, or fixed bundle quantities
|
||
|
|
- Global and per-product configuration options
|
||
|
|
|
||
|
|
### New Settings
|
||
|
|
- 🌍 **Global Restriction Setting**
|
||
|
|
- Enable quantity restrictions site-wide
|
||
|
|
- Located in: WooCommerce > Settings > Tier & Package Prices
|
||
|
|
- Description: "Limit quantities to defined package sizes only"
|
||
|
|
|
||
|
|
- 📦 **Per-Product Restriction Setting**
|
||
|
|
- Override global setting on individual products
|
||
|
|
- Located in: Product Edit > Package Pricing section
|
||
|
|
- Checkbox: "Restrict to Package Quantities"
|
||
|
|
|
||
|
|
### Frontend Enhancements
|
||
|
|
- 🎨 **Enhanced Package Selection UI**
|
||
|
|
- Automatic quantity field hiding when restriction is enabled
|
||
|
|
- Clear notice: "Choose a package size below"
|
||
|
|
- Visual package selection with highlighted states
|
||
|
|
- Responsive package selection buttons
|
||
|
|
|
||
|
|
- ✅ **Client-Side Validation**
|
||
|
|
- JavaScript prevents form submission without package selection
|
||
|
|
- Alert message guides users to select a package
|
||
|
|
- Real-time visual feedback on selection
|
||
|
|
|
||
|
|
### Backend Validation
|
||
|
|
- 🛡️ **Server-Side Cart Validation**
|
||
|
|
- Validates quantity matches defined packages
|
||
|
|
- Prevents manual quantity manipulation
|
||
|
|
- User-friendly error messages
|
||
|
|
- Example: "The quantity 15 is not available for Product Name. Please choose from the available package sizes: 10, 20, 50"
|
||
|
|
|
||
|
|
### Technical Improvements
|
||
|
|
- New method: `WC_TPP_Cart::validate_package_quantity()`
|
||
|
|
- New method: `WC_TPP_Frontend::maybe_hide_quantity_input()`
|
||
|
|
- Enhanced `woocommerce_add_to_cart_validation` filter integration
|
||
|
|
- Added `wc-tpp-restricted-mode` CSS class
|
||
|
|
- Added `wc-tpp-package-selectable` CSS class for styling
|
||
|
|
- New product meta key: `_wc_tpp_restrict_to_packages`
|
||
|
|
- New global option: `wc_tpp_restrict_package_quantities`
|
||
|
|
|
||
|
|
### Translations
|
||
|
|
- Added 7 new translatable strings
|
||
|
|
- Updated all language files (en_US, de_DE, de_CH_informal)
|
||
|
|
- All .mo files recompiled with new strings
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
1. Download the ZIP file: `wc-tier-and-package-prices-1.1.0.zip`
|
||
|
|
2. Log in to your WordPress admin panel
|
||
|
|
3. Navigate to **Plugins > Add New > Upload Plugin**
|
||
|
|
4. Choose the downloaded ZIP file
|
||
|
|
5. Click **Install Now**
|
||
|
|
6. After installation, click **Activate Plugin**
|
||
|
|
7. Go to **WooCommerce > Settings > Tier & Package Prices** to configure
|
||
|
|
|
||
|
|
### Upgrade from 1.0.x
|
||
|
|
|
||
|
|
This is a **minor version** update with new features. No data migration needed.
|
||
|
|
|
||
|
|
**Steps:**
|
||
|
|
1. Deactivate the current version
|
||
|
|
2. Upload and activate version 1.1.0
|
||
|
|
3. All existing settings and data will be automatically preserved
|
||
|
|
4. Review new restriction settings if desired
|
||
|
|
|
||
|
|
### Upgrade from 1.0.2
|
||
|
|
|
||
|
|
No breaking changes. Safe to upgrade directly. New restriction feature is disabled by default.
|
||
|
|
|
||
|
|
### Requirements
|
||
|
|
|
||
|
|
- **WordPress:** 6.0 or higher
|
||
|
|
- **PHP:** 7.4 or higher
|
||
|
|
- **WooCommerce:** 8.0 or higher
|
||
|
|
|
||
|
|
## New Strings Translation Reference
|
||
|
|
|
||
|
|
All new strings in this release:
|
||
|
|
|
||
|
|
### Settings Page
|
||
|
|
1. "Restrict to Package Quantities" - Checkbox label
|
||
|
|
2. "Limit quantities to defined package sizes only" - Checkbox description
|
||
|
|
3. "When enabled, customers can only purchase..." - Tooltip text
|
||
|
|
|
||
|
|
### Product Meta Box
|
||
|
|
4. "Restrict to Package Quantities" - Checkbox label (same as above)
|
||
|
|
5. "Only allow quantities defined in packages above" - Tooltip text
|
||
|
|
|
||
|
|
### Frontend Display
|
||
|
|
6. "Choose a package size below" - User notice in restricted mode
|
||
|
|
|
||
|
|
### Cart Validation
|
||
|
|
7. "this product" - Fallback product name
|
||
|
|
8. "The quantity %1$d is not available for %2$s..." - Error message template
|
||
|
|
|
||
|
|
## Use Cases
|
||
|
|
|
||
|
|
### Bulk-Only Sales
|
||
|
|
Enable restriction globally to sell products only in bulk quantities.
|
||
|
|
|
||
|
|
**Example:**
|
||
|
|
- Package 1: 100 units at $500
|
||
|
|
- Package 2: 250 units at $1,100
|
||
|
|
- Package 3: 500 units at $2,000
|
||
|
|
|
||
|
|
Customers can only purchase these exact quantities.
|
||
|
|
|
||
|
|
### Sample Packs
|
||
|
|
Create fixed sample packs with no custom quantities.
|
||
|
|
|
||
|
|
**Example:**
|
||
|
|
- Starter Pack: 10 items
|
||
|
|
- Trial Pack: 25 items
|
||
|
|
- Full Pack: 50 items
|
||
|
|
|
||
|
|
### Promotional Bundles
|
||
|
|
Offer promotional pricing only for specific bundle sizes.
|
||
|
|
|
||
|
|
**Example:**
|
||
|
|
- Holiday Bundle: 12 units (seasonal pricing)
|
||
|
|
- Party Pack: 24 units (bulk discount)
|
||
|
|
- Wholesale Bundle: 100 units (wholesale pricing)
|
||
|
|
|
||
|
|
## Configuration Examples
|
||
|
|
|
||
|
|
### Example 1: Site-Wide Restriction
|
||
|
|
|
||
|
|
**Scenario:** All products should only be sold in packages
|
||
|
|
|
||
|
|
**Configuration:**
|
||
|
|
1. Go to WooCommerce > Settings > Tier & Package Prices
|
||
|
|
2. Check "Restrict to Package Quantities"
|
||
|
|
3. Save changes
|
||
|
|
4. Configure package sizes for each product
|
||
|
|
|
||
|
|
**Result:** All products with packages defined will enforce quantity restrictions
|
||
|
|
|
||
|
|
### Example 2: Per-Product Restriction
|
||
|
|
|
||
|
|
**Scenario:** Only specific products need quantity restrictions
|
||
|
|
|
||
|
|
**Configuration:**
|
||
|
|
1. Leave global setting unchecked
|
||
|
|
2. Edit the specific product
|
||
|
|
3. Scroll to Package Pricing section
|
||
|
|
4. Check "Restrict to Package Quantities"
|
||
|
|
5. Update product
|
||
|
|
|
||
|
|
**Result:** Only that product enforces restrictions
|
||
|
|
|
||
|
|
### Example 3: Mixed Approach
|
||
|
|
|
||
|
|
**Scenario:** Most products are restricted, but some allow custom quantities
|
||
|
|
|
||
|
|
**Configuration:**
|
||
|
|
1. Enable global restriction
|
||
|
|
2. For products that should allow custom quantities, simply don't define any packages
|
||
|
|
3. Products without packages defined won't show restrictions
|
||
|
|
|
||
|
|
## Feature Compatibility
|
||
|
|
|
||
|
|
### Works With
|
||
|
|
- ✅ WooCommerce 8.0 - 10.0
|
||
|
|
- ✅ WordPress 6.0+
|
||
|
|
- ✅ HPOS (High-Performance Order Storage)
|
||
|
|
- ✅ All WooCommerce themes
|
||
|
|
- ✅ Tier pricing (can use both features together)
|
||
|
|
- ✅ Package pricing (required for restriction)
|
||
|
|
- ✅ All pricing table display positions
|
||
|
|
|
||
|
|
### Requirements for Restriction Feature
|
||
|
|
- Product must have at least one package defined
|
||
|
|
- Either global or per-product restriction must be enabled
|
||
|
|
- Package pricing must be enabled in settings
|
||
|
|
|
||
|
|
## Package Contents
|
||
|
|
|
||
|
|
The installation package includes all files from version 1.0.2 plus:
|
||
|
|
|
||
|
|
### Modified Files
|
||
|
|
- `wc-tier-and-package-prices.php` - Version updated to 1.1.0
|
||
|
|
- `composer.json` - Version updated to 1.1.0
|
||
|
|
- `CHANGELOG.md` - Added v1.1.0 section
|
||
|
|
- `includes/class-wc-tpp-settings.php` - Added restriction setting
|
||
|
|
- `includes/class-wc-tpp-product-meta.php` - Added per-product checkbox
|
||
|
|
- `includes/class-wc-tpp-frontend.php` - Added quantity hiding logic
|
||
|
|
- `includes/class-wc-tpp-cart.php` - Added validation method
|
||
|
|
- `assets/js/frontend.js` - Added restricted mode handling
|
||
|
|
- `templates/frontend/package-pricing-display.twig` - Added restriction notice
|
||
|
|
- `templates/frontend/pricing-table.twig` - Pass restriction flag
|
||
|
|
- All translation files (.po/.mo) - Updated with new strings
|
||
|
|
|
||
|
|
### Complete Directory Structure
|
||
|
|
```
|
||
|
|
wc-tier-and-package-prices/
|
||
|
|
├── assets/
|
||
|
|
│ ├── css/
|
||
|
|
│ │ ├── admin.css
|
||
|
|
│ │ └── frontend.css
|
||
|
|
│ └── js/
|
||
|
|
│ ├── admin.js
|
||
|
|
│ └── frontend.js (UPDATED)
|
||
|
|
├── includes/
|
||
|
|
│ ├── class-wc-tpp-admin.php
|
||
|
|
│ ├── class-wc-tpp-cart.php (UPDATED)
|
||
|
|
│ ├── class-wc-tpp-frontend.php (UPDATED)
|
||
|
|
│ ├── class-wc-tpp-product-meta.php (UPDATED)
|
||
|
|
│ ├── class-wc-tpp-settings.php (UPDATED)
|
||
|
|
│ └── class-wc-tpp-template-loader.php
|
||
|
|
├── languages/ (ALL UPDATED)
|
||
|
|
│ ├── wc-tier-package-prices-de_CH_informal.po/mo
|
||
|
|
│ ├── wc-tier-package-prices-de_DE.po/mo
|
||
|
|
│ ├── wc-tier-package-prices-en_US.po/mo
|
||
|
|
│ └── wc-tier-package-prices.pot
|
||
|
|
├── templates/
|
||
|
|
│ ├── admin/
|
||
|
|
│ │ ├── package-row.twig
|
||
|
|
│ │ └── tier-row.twig
|
||
|
|
│ └── frontend/
|
||
|
|
│ ├── package-pricing-display.twig (UPDATED)
|
||
|
|
│ ├── pricing-table.twig (UPDATED)
|
||
|
|
│ └── tier-pricing-table.twig
|
||
|
|
├── vendor/ (Twig v3.22.2)
|
||
|
|
├── CHANGELOG.md (UPDATED)
|
||
|
|
├── composer.json (UPDATED)
|
||
|
|
└── wc-tier-and-package-prices.php (UPDATED)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Features (Complete List)
|
||
|
|
|
||
|
|
### Tier Pricing
|
||
|
|
- ✅ Quantity-based discount tiers
|
||
|
|
- ✅ Automatic price calculation
|
||
|
|
- ✅ Volume discount display
|
||
|
|
|
||
|
|
### Package Pricing
|
||
|
|
- ✅ Fixed-price bundles
|
||
|
|
- ✅ Custom package labels
|
||
|
|
- ✅ Multiple package options per product
|
||
|
|
- ✅ **NEW:** Quantity restriction to packages only
|
||
|
|
|
||
|
|
### Admin Features
|
||
|
|
- ✅ WooCommerce Settings integration
|
||
|
|
- ✅ Easy-to-use product meta boxes
|
||
|
|
- ✅ Configurable display positions
|
||
|
|
- ✅ Native WooCommerce UI
|
||
|
|
- ✅ **NEW:** Global restriction setting
|
||
|
|
- ✅ **NEW:** Per-product restriction override
|
||
|
|
|
||
|
|
### Frontend Features
|
||
|
|
- ✅ Beautiful pricing tables (Twig templates)
|
||
|
|
- ✅ Real-time cart updates
|
||
|
|
- ✅ Responsive design
|
||
|
|
- ✅ 3 languages supported
|
||
|
|
- ✅ **NEW:** Package-only selection mode
|
||
|
|
- ✅ **NEW:** Automatic quantity field hiding
|
||
|
|
- ✅ **NEW:** Visual package selection
|
||
|
|
|
||
|
|
### Validation & Security
|
||
|
|
- ✅ **NEW:** Client-side JavaScript validation
|
||
|
|
- ✅ **NEW:** Server-side cart validation
|
||
|
|
- ✅ **NEW:** User-friendly error messages
|
||
|
|
- ✅ WooCommerce HPOS compatible
|
||
|
|
|
||
|
|
## Breaking Changes
|
||
|
|
|
||
|
|
**None.** This release is fully backward compatible.
|
||
|
|
|
||
|
|
The new restriction feature is disabled by default and must be explicitly enabled.
|
||
|
|
|
||
|
|
## Migration Notes
|
||
|
|
|
||
|
|
### From 1.0.2
|
||
|
|
- No migration needed
|
||
|
|
- New settings appear automatically in admin
|
||
|
|
- Feature is disabled by default
|
||
|
|
|
||
|
|
### Settings Location
|
||
|
|
All settings remain in: **WooCommerce > Settings > Tier & Package Prices**
|
||
|
|
|
||
|
|
### Data Preservation
|
||
|
|
- All existing tier pricing data preserved
|
||
|
|
- All existing package pricing data preserved
|
||
|
|
- All product meta data preserved
|
||
|
|
- No database changes required
|
||
|
|
|
||
|
|
## Known Limitations
|
||
|
|
|
||
|
|
### Current Version
|
||
|
|
1. Restriction only works when packages are defined
|
||
|
|
2. Cannot restrict to tier quantities (only packages)
|
||
|
|
3. Restriction applies to entire product (no variation-level control)
|
||
|
|
|
||
|
|
### Future Enhancements
|
||
|
|
These features may be added in future versions:
|
||
|
|
- Variation-level restriction control
|
||
|
|
- Restrict to tier quantities option
|
||
|
|
- Minimum/maximum package selection limits
|
||
|
|
|
||
|
|
## Support
|
||
|
|
|
||
|
|
- **Documentation:** See README.md and CHANGELOG.md
|
||
|
|
- **Previous Release:** See RELEASE-INFO-1.0.2.md
|
||
|
|
- **Issues:** https://src.bundespruefstelle.ch/wc-tier-package-prices/issues
|
||
|
|
- **Author:** Marco Graetsch
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
GPL v2 or later - https://www.gnu.org/licenses/gpl-2.0.html
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Production Ready:** This package includes optimized autoloader and no development dependencies.
|
||
|
|
|
||
|
|
**What's Next:** Version 1.1.0 completes the package restriction feature set. Future versions may add variation-level controls and tier quantity restrictions.
|