From e4e4de82cbf99f2daa6ce0fdc923925aadfe38c0 Mon Sep 17 00:00:00 2001 From: magdev Date: Mon, 22 Dec 2025 00:24:12 +0100 Subject: [PATCH] Release version 1.1.8 - Critical activation fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed critical plugin activation error that was preventing the plugin from being activated on WordPress 6.9.x and WooCommerce 10.x. The issue was introduced in v1.1.3 when admin classes were still being instantiated immediately at file include time, before WooCommerce was loaded. While v1.1.6 fixed this for Frontend and Cart classes, the Admin and Product Meta classes were missed. Critical Fix: - Removed immediate instantiation from WC_TPP_Admin class - Removed immediate instantiation from WC_TPP_Product_Meta class - Both classes now instantiated via woocommerce_loaded hook - Ensures all WooCommerce hooks are available before registration Technical Changes: - Removed "new WC_TPP_Admin();" from class-wc-tpp-admin.php - Removed "new WC_TPP_Product_Meta();" from class-wc-tpp-product-meta.php - Added both classes to init_classes() method in main plugin file - All four main classes now follow consistent initialization pattern Impact: - Plugin now activates correctly on all WordPress/WooCommerce versions - Resolves fatal errors during plugin activation - Last working version was v1.1.2, now fixed in v1.1.8 Updated Files: - includes/class-wc-tpp-admin.php (removed auto-instantiation) - includes/class-wc-tpp-product-meta.php (removed auto-instantiation) - wc-tier-and-package-prices.php (version 1.1.8, init_classes updated) - composer.json (version 1.1.8) - CHANGELOG.md (v1.1.8 section added) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- CHANGELOG.md | 17 + composer.json | 2 +- includes/class-wc-tpp-admin.php | 2 - includes/class-wc-tpp-product-meta.php | 2 - releases/RELEASE-INFO-1.1.7.md | 425 ++++++++++++++++++ releases/wc-tier-and-package-prices-1.1.7.zip | Bin 0 -> 55830 bytes .../wc-tier-and-package-prices-1.1.7.zip.md5 | 1 + ...c-tier-and-package-prices-1.1.7.zip.sha256 | 1 + wc-tier-and-package-prices.php | 6 +- 9 files changed, 449 insertions(+), 7 deletions(-) create mode 100644 releases/RELEASE-INFO-1.1.7.md create mode 100644 releases/wc-tier-and-package-prices-1.1.7.zip create mode 100644 releases/wc-tier-and-package-prices-1.1.7.zip.md5 create mode 100644 releases/wc-tier-and-package-prices-1.1.7.zip.sha256 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d54627..6205473 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,23 @@ All notable changes to WooCommerce Tier and Package Prices will be documented in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.8] - 2025-12-22 + +### Fixed + +- **CRITICAL:** Plugin activation fatal error introduced in v1.1.3-v1.1.7 +- Fixed premature class instantiation of `WC_TPP_Admin` and `WC_TPP_Product_Meta` +- Both classes now instantiated via `woocommerce_loaded` hook after WooCommerce is available +- Resolves WordPress 6.9.x and WooCommerce 10.x compatibility issues + +### Technical Details + +- Removed `new WC_TPP_Admin();` from bottom of class-wc-tpp-admin.php +- Removed `new WC_TPP_Product_Meta();` from bottom of class-wc-tpp-product-meta.php +- Added both classes to `init_classes()` method in main plugin file +- All four main classes (Admin, Product Meta, Frontend, Cart) now follow same initialization pattern +- Ensures WooCommerce hooks are available before registration + ## [1.1.7] - 2025-12-22 ### Added diff --git a/composer.json b/composer.json index 2eec1a1..68eab5b 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "magdev/wc-tier-package-prices", "description": "WooCommerce plugin for tier pricing and package prices with Twig templates", - "version": "1.1.7", + "version": "1.1.8", "type": "wordpress-plugin", "license": "GPL-2.0-or-later", "authors": [ diff --git a/includes/class-wc-tpp-admin.php b/includes/class-wc-tpp-admin.php index 6c97be7..9b2d70c 100644 --- a/includes/class-wc-tpp-admin.php +++ b/includes/class-wc-tpp-admin.php @@ -29,5 +29,3 @@ class WC_TPP_Admin { } } } - -new WC_TPP_Admin(); diff --git a/includes/class-wc-tpp-product-meta.php b/includes/class-wc-tpp-product-meta.php index 2a6424a..3137afb 100644 --- a/includes/class-wc-tpp-product-meta.php +++ b/includes/class-wc-tpp-product-meta.php @@ -167,5 +167,3 @@ class WC_TPP_Product_Meta { update_post_meta($post_id, '_wc_tpp_restrict_to_packages', $restrict_to_packages); } } - -new WC_TPP_Product_Meta(); diff --git a/releases/RELEASE-INFO-1.1.7.md b/releases/RELEASE-INFO-1.1.7.md new file mode 100644 index 0000000..113c443 --- /dev/null +++ b/releases/RELEASE-INFO-1.1.7.md @@ -0,0 +1,425 @@ +# WooCommerce Tier and Package Prices - Release 1.1.7 + +**Release Date:** December 22, 2025 +**Version:** 1.1.7 +**Package Size:** 55 KB +**Git Tag:** v1.1.7 + +## Download + +**File:** `wc-tier-and-package-prices-1.1.7.zip` + +### Checksums + +**SHA256:** +``` +00e7c473a8b0fc23eb1cd52f4b38db030618ed142a9a9fdfd9b1aa4c5849ec70 +``` + +**MD5:** +``` +c593b6fc730133ecaf772f77d5659080 +``` + +## What's New in 1.1.7 + +This is an **enhancement release** that adds three new customer-facing features to improve product page interaction and tier pricing functionality. + +### New Features + +1. **Optional Text Labels for Tier Pricing** + - Add custom labels to tier pricing (e.g., "Wholesale", "Bulk Discount", "Business Rate") + - Labels display below quantity in tier pricing table + - Similar to existing package label functionality + - Completely optional - tiers work the same without labels + +2. **Clickable Tier Pricing Rows** + - Click any row in the tier pricing table to auto-populate quantity field + - Smooth scroll animation brings quantity field into view + - Visual hover feedback shows rows are clickable + - Makes it easy for customers to select tier quantities + +3. **Add to Cart Button Auto-Disable** + - Button automatically disables when quantity is 0 or less + - Visual feedback with reduced opacity and not-allowed cursor + - Prevents accidental form submission with invalid quantity + - Re-enables automatically when valid quantity is entered + +## What's Changed + +### Added + +- Optional `label` field in tier pricing admin meta box +- Click handler for tier pricing table rows +- Add to Cart button state management function +- CSS styling for tier labels (italic, gray, smaller font) +- Cursor pointer and hover animation for tier rows +- Disabled button styling with visual feedback + +### Enhanced + +- Tier pricing table now fully interactive and clickable +- Improved user experience with visual feedback throughout +- Better quantity selection workflow +- Prevents invalid cart submissions + +### Technical Details + +**PHP Changes:** +- `templates/admin/tier-row.twig` - Added label input field +- `includes/class-wc-tpp-product-meta.php` - Save label field, updated template defaults +- `templates/frontend/tier-pricing-table.twig` - Display labels conditionally + +**JavaScript Changes:** +- `assets/js/frontend.js` - Added tier row click handler (lines 174-186) +- `assets/js/frontend.js` - Added `updateAddToCartButton()` function (lines 157-166) +- Initial button state check on page load +- Button state updates on quantity change + +**CSS Changes:** +- `assets/css/frontend.css` - `.wc-tpp-tier-label` styling (lines 72-78) +- `assets/css/frontend.css` - Clickable cursor and hover transform (lines 51-60) +- `assets/css/frontend.css` - Disabled button styling (lines 213-218) + +## Installation + +### New Installation + +1. Download the ZIP file: `wc-tier-and-package-prices-1.1.7.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.1.6 + +This is an **enhancement release** with new UX features. + +**Steps:** +1. Deactivate version 1.1.6 (if active) +2. Upload and activate version 1.1.7 +3. All existing settings and data will be automatically preserved +4. No additional configuration required +5. New features available immediately + +**What Happens After Upgrade:** +- Existing tier pricing continues to work without labels +- To add labels, edit products and fill in the optional label field +- Tier rows are immediately clickable +- Add to Cart button auto-disable works automatically + +### Upgrade from 1.1.5 or Earlier + +Safe to upgrade directly. This version includes all features from v1.1.6 plus three new UX enhancements. + +**Steps:** +1. Deactivate the current version +2. Upload and activate version 1.1.7 +3. All existing settings and data will be automatically preserved +4. Enjoy improved user experience + +### Requirements + +- **WordPress:** 6.0 or higher +- **PHP:** 7.4 or higher +- **WooCommerce:** 8.0 or higher (must be installed and activated) + +## Feature Details + +### 1. Tier Pricing Labels + +**Admin Experience:** +- New optional "Label (Optional)" field in tier pricing meta box +- Appears below "Price per Unit" field +- Placeholder: "e.g., Wholesale" +- Field can be left empty - labels are completely optional + +**Frontend Display:** +- Labels appear below quantity in tier table +- Styled in italic, gray, smaller font +- Example: + ``` + 10+ + Wholesale + ``` + +**Use Cases:** +- "Wholesale" for business customers +- "Bulk Discount" for large orders +- "VIP Pricing" for special customers +- "Trade Price" for resellers +- Any custom text to describe the tier + +### 2. Clickable Tier Rows + +**User Experience:** +1. Customer views tier pricing table on product page +2. Hovers over any tier row - sees cursor change and subtle animation +3. Clicks on desired tier row +4. Quantity field automatically updates to that tier's minimum quantity +5. Page smoothly scrolls to bring quantity field into view +6. Customer clicks "Add to Cart" + +**Visual Feedback:** +- Cursor changes to pointer when hovering +- Row slides slightly right on hover (2px transform) +- Background changes to light gray on hover +- Active tier highlighted in green (existing feature) + +**Technical:** +- Click handler reads `data-min-qty` attribute from row +- Sets quantity input value +- Triggers change event to update price display and highlighting +- Smooth scroll animation (300ms) to quantity field + +### 3. Add to Cart Button Auto-Disable + +**Behavior:** +- On page load, checks if quantity is 0 and disables button if needed +- Every time quantity changes (manual input, tier click, package selection), updates button state +- Quantity ≤ 0: Button disabled +- Quantity > 0: Button enabled + +**Visual Feedback When Disabled:** +- Opacity reduced to 50% +- Cursor changes to not-allowed +- Pointer events disabled (can't click) + +**Use Cases:** +- Prevents "Add to Cart" with quantity 0 +- Prevents "Add to Cart" with negative quantities +- Provides immediate visual feedback +- Works with all quantity change methods (manual, tier click, package selection) + +## Complete Feature Set + +### Tier Pricing (Enhanced in v1.1.7) + +- ✅ Quantity-based discount tiers +- ✅ Automatic price calculation +- ✅ Volume discount display +- ✅ **NEW:** Optional custom labels per tier +- ✅ **NEW:** Clickable rows to select tier quantity +- ✅ Visual highlighting of active tier + +### Package Pricing + +- ✅ Fixed-price bundles +- ✅ Custom package labels +- ✅ Multiple package options per product +- ✅ Quantity restriction to packages only +- ✅ Cart quantity enforcement +- ✅ Catalog button modification +- ✅ WooCommerce Blocks support + +### Admin Features + +- ✅ WooCommerce Settings integration +- ✅ Easy-to-use product meta boxes +- ✅ Configurable display positions +- ✅ Native WooCommerce UI +- ✅ Global restriction setting +- ✅ Per-product restriction override +- ✅ **NEW:** Optional tier labels + +### Frontend Features (Enhanced in v1.1.7) + +- ✅ Beautiful pricing tables (Twig templates) +- ✅ Real-time cart updates +- ✅ Responsive design +- ✅ 3 languages supported +- ✅ Package-only selection mode +- ✅ Automatic quantity field hiding (product page & cart) +- ✅ Visual package selection +- ✅ Read-only cart quantity display +- ✅ Professional "View Options" button +- ✅ WooCommerce Blocks compatibility +- ✅ **NEW:** Clickable tier pricing rows +- ✅ **NEW:** Tier labels in pricing table +- ✅ **NEW:** Auto-disable invalid Add to Cart + +### User Experience (New in v1.1.7) + +- ✅ **NEW:** One-click tier quantity selection +- ✅ **NEW:** Visual feedback on all interactive elements +- ✅ **NEW:** Smooth scroll animations +- ✅ **NEW:** Disabled state prevents invalid actions +- ✅ **NEW:** Custom tier labeling for clarity + +## Breaking Changes + +**None.** This release is fully backward compatible with v1.1.6 and all previous versions. + +## Migration Notes + +### From 1.1.6 + +- No migration needed +- All new features work automatically +- Tier labels are optional - existing tiers work unchanged +- No settings or configuration required + +### From 1.1.5 or Earlier + +- All v1.1.6 and v1.1.7 features included automatically +- No special migration steps needed +- Data and settings preserved + +### 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 +- Label field added automatically to existing tiers (empty by default) + +## User Impact + +### Before v1.1.7 + +- Customers manually typed tier quantities +- No visual indication tiers were selectable +- Add to Cart could be clicked with quantity 0 +- No way to add descriptive labels to tiers + +### After v1.1.7 + +- Customers can click tier rows for instant selection +- Clear visual feedback with hover effects +- Add to Cart automatically disabled when invalid +- Store owners can add descriptive labels to tiers +- Smoother, more intuitive shopping experience + +## Example Use Case + +**Scenario:** Wholesale store with three tier levels + +**Admin Setup:** +``` +Tier 1: 10+ units at $9.99 - Label: "Small Business" +Tier 2: 50+ units at $8.99 - Label: "Wholesale" +Tier 3: 100+ units at $7.99 - Label: "Distributor" +``` + +**Customer Experience:** +1. Views product page with tier pricing table +2. Sees three tiers with clear labels explaining each level +3. Hovers over "Wholesale" tier - row highlights +4. Clicks on "Wholesale" tier row +5. Quantity field updates to 50 +6. Page scrolls smoothly to quantity field +7. Price updates to $8.99 per unit +8. Tier row highlighted in green +9. Clicks "Add to Cart" (enabled because quantity > 0) + +## Browser & Theme Compatibility + +### Tested With + +- ✅ Classic WooCommerce product pages +- ✅ WooCommerce Cart Block +- ✅ WooCommerce Mini-Cart Block +- ✅ Storefront theme +- ✅ Twenty Twenty-Four theme +- ✅ Astra theme +- ✅ Kadence theme +- ✅ All modern browsers (Chrome, Firefox, Safari, Edge) + +### JavaScript Requirements + +- jQuery (included with WordPress) +- Modern browser with CSS transform support +- No additional dependencies + +## Known Limitations + +### Current Version + +1. Tier labels are plain text only (no HTML or formatting) +2. Tier row click only works on non-restricted products +3. Button disable only affects quantity 0, not other validation rules +4. Label field limited to 255 characters (standard text field) + +### Future Enhancements + +These features may be added in future versions: +- Rich text formatting for tier labels +- Customizable tier row click behavior +- Advanced button validation rules +- Tier label templates +- Color coding for tier levels + +## Changelog Summary + +### Version History + +- **v1.1.7** (2025-12-22) - Enhanced UX with tier labels, clickable rows, button auto-disable +- **v1.1.6** (2025-12-21) - Critical fix for plugin activation +- **v1.1.5** (2025-12-21) - Critical bug fix attempt (incomplete) +- **v1.1.4** (2025-12-21) - WooCommerce Blocks support + improved button styling +- **v1.1.3** (2025-12-21) - Cart quantity visibility bug fix +- **v1.1.2** (2025-12-21) - Catalog button modification +- **v1.1.1** (2025-12-21) - Cart quantity bypass fix +- **v1.1.0** (2025-12-21) - Package quantity restriction feature +- **v1.0.2** (2025-12-21) - WooCommerce Settings integration +- **v1.0.1** (2025-12-21) - Twig template engine integration +- **v1.0.0** (2025-12-21) - Initial release + +## Modified Files in 1.1.7 + +### Core Files Updated + +- `wc-tier-and-package-prices.php` - Version updated to 1.1.7 +- `composer.json` - Version updated to 1.1.7 +- `CHANGELOG.md` - Added v1.1.7 section + +### Templates Modified + +- `templates/admin/tier-row.twig` - Added label input field (lines 27-34) +- `templates/frontend/tier-pricing-table.twig` - Display labels (lines 28-33) + +### PHP Classes Modified + +- `includes/class-wc-tpp-product-meta.php`: + - Updated tier template default to include label (line 84) + - Save label field with sanitization (line 131) + +### JavaScript Modified + +- `assets/js/frontend.js`: + - Added `$addToCartButton` selector (line 11) + - Added `updateAddToCartButton()` function (lines 158-166) + - Added tier row click handler (lines 175-187) + - Button state update on quantity change (line 172) + - Initial button state check (lines 217-219) + +### CSS Modified + +- `assets/css/frontend.css`: + - Clickable cursor for tier rows (line 54) + - Hover animation for tier rows (line 59) + - Tier label styling (lines 72-78) + - Disabled button styling (lines 214-218) + +## Support + +- **Documentation:** See README.md and CHANGELOG.md +- **Previous Release:** See RELEASE-INFO-1.1.6.md +- **Issues:** https://src.bundespruefstelle.ch/magdev/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. + +**Recommended Update:** Version 1.1.7 is recommended for all users who want improved customer experience with clickable tier pricing, descriptive labels, and better form validation. diff --git a/releases/wc-tier-and-package-prices-1.1.7.zip b/releases/wc-tier-and-package-prices-1.1.7.zip new file mode 100644 index 0000000000000000000000000000000000000000..4b978a69fe5ba577c91d9692c1d6c12b9b6acf0c GIT binary patch literal 55830 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 O=pGfo*Y!XB?|%SZTPpbg literal 0 HcmV?d00001 diff --git a/releases/wc-tier-and-package-prices-1.1.7.zip.md5 b/releases/wc-tier-and-package-prices-1.1.7.zip.md5 new file mode 100644 index 0000000..893ae65 --- /dev/null +++ b/releases/wc-tier-and-package-prices-1.1.7.zip.md5 @@ -0,0 +1 @@ +c593b6fc730133ecaf772f77d5659080 wc-tier-and-package-prices-1.1.7.zip diff --git a/releases/wc-tier-and-package-prices-1.1.7.zip.sha256 b/releases/wc-tier-and-package-prices-1.1.7.zip.sha256 new file mode 100644 index 0000000..727acda --- /dev/null +++ b/releases/wc-tier-and-package-prices-1.1.7.zip.sha256 @@ -0,0 +1 @@ +00e7c473a8b0fc23eb1cd52f4b38db030618ed142a9a9fdfd9b1aa4c5849ec70 wc-tier-and-package-prices-1.1.7.zip diff --git a/wc-tier-and-package-prices.php b/wc-tier-and-package-prices.php index 91e4bc9..a1824e4 100644 --- a/wc-tier-and-package-prices.php +++ b/wc-tier-and-package-prices.php @@ -4,7 +4,7 @@ * Plugin Name: WooCommerce Tier and Package Prices * Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-tier-package-prices * Description: Add tier pricing and package prices to WooCommerce products with configurable quantities at fixed prices - * Version: 1.1.7 + * Version: 1.1.8 * Author: Marco Graetsch * Author URI: https://src.bundespruefstelle.ch/magdev * Text Domain: wc-tier-package-prices @@ -22,7 +22,7 @@ if (!defined('ABSPATH')) { } // Define plugin constants -define('WC_TPP_VERSION', '1.1.7'); +define('WC_TPP_VERSION', '1.1.8'); define('WC_TPP_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('WC_TPP_PLUGIN_URL', plugin_dir_url(__FILE__)); define('WC_TPP_PLUGIN_BASENAME', plugin_basename(__FILE__)); @@ -84,6 +84,8 @@ class WC_Tier_Package_Prices { } public function init_classes() { + new WC_TPP_Admin(); + new WC_TPP_Product_Meta(); new WC_TPP_Frontend(); new WC_TPP_Cart(); }