Files
wc-tier-and-package-prices/CHANGELOG.md
magdev e4e4de82cb Release version 1.1.8 - Critical activation fix
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 <noreply@anthropic.com>
2025-12-22 00:24:12 +01:00

10 KiB
Raw Permalink Blame History

Changelog

All notable changes to WooCommerce Tier and Package Prices will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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

  • Optional text labels for tier pricing (similar to package labels)
  • Clickable tier pricing rows that auto-populate quantity field
  • Add to Cart button auto-disable when quantity is 0 or less

Enhanced

  • Tier pricing table rows now clickable with visual hover feedback
  • Clicking a tier row sets quantity to that tier's minimum quantity
  • Smooth scroll animation to quantity field when tier is clicked
  • Add to Cart button disabled state with visual feedback (opacity, cursor)
  • Tier labels display below quantity in frontend table (italic, gray text)

Technical Details

  • Added optional label field to tier pricing meta box (admin/tier-row.twig)
  • Updated tier save logic to store label field (class-wc-tpp-product-meta.php)
  • Enhanced tier pricing template to display labels (frontend/tier-pricing-table.twig)
  • Added click handler for tier rows (assets/js/frontend.js)
  • Added updateAddToCartButton() function to manage button state
  • CSS: .wc-tpp-tier-label styling for tier labels
  • CSS: Clickable cursor and hover animation for tier rows
  • CSS: Disabled button styling (.single_add_to_cart_button:disabled)

[1.1.6] - 2025-12-21

Fixed

  • CRITICAL: Plugin activation fatal error in v1.1.3, v1.1.4, and v1.1.5
  • Fatal error caused by premature class instantiation before WooCommerce is loaded
  • Removed immediate class instantiation from class-wc-tpp-cart.php and class-wc-tpp-frontend.php

Technical

  • Moved WC_TPP_Cart and WC_TPP_Frontend instantiation to woocommerce_loaded hook
  • Added init_classes() method to main plugin class for controlled class initialization
  • Ensures WooCommerce is fully loaded before registering hooks that depend on WC functions
  • Fixed hook registration timing to prevent accessing WooCommerce before it's available

[1.1.5] - 2025-12-21

Fixed

  • CRITICAL: Plugin activation error in v1.1.3 and v1.1.4 caused by add_cart_quantity_css() method
  • Fatal error when WooCommerce cart object not available during plugin initialization
  • Frontend errors on admin pages and during activation

Technical

  • Added function_exists('WC') check before accessing WooCommerce functions
  • Added is_admin() check to prevent CSS injection on admin pages
  • Enhanced error prevention in add_cart_quantity_css() method

[1.1.4] - 2025-12-21

Added

  • WooCommerce Blocks support for quantity restrictions
  • woocommerce_store_api_product_quantity_editable filter for block-based carts
  • block_quantity_editable() method in WC_TPP_Cart class
  • CSS targeting for .wc-block-components-quantity-selector elements

Enhanced

  • "View Options" button styling to match standard WooCommerce "Add to Cart" buttons
  • Button padding, font weight, and border radius for better visual consistency
  • Hover effects with smooth transitions

Fixed

  • WooCommerce blocks cart quantity selector visibility for restricted products
  • WooCommerce blocks mini-cart quantity selector visibility

Technical

  • Added Store API integration for block-based cart/mini-cart
  • Enhanced CSS for block cart items with product-specific selectors
  • Improved button styling with WooCommerce standard values (0.618em × 1em padding)
  • Added transition effects for better UX

[1.1.3] - 2025-12-21

Fixed

  • Cart quantity input visibility issue in cart and cart sidebar for restricted products
  • Enhanced filter priority (999) to ensure quantity hiding runs after other plugins
  • Mini-cart quantity input now properly hidden for restricted products

Added

  • woocommerce_widget_cart_item_quantity filter support for mini-cart
  • add_cart_quantity_css() method for dynamic CSS injection
  • data-product-id attribute to quantity spans for targeted CSS selectors
  • CSS class wc-tpp-restricted-qty for improved targeting

Technical

  • Increased filter priority from 10 to 999 for woocommerce_cart_item_quantity
  • Added maybe_hide_mini_cart_quantity_input() method in WC_TPP_Cart class
  • Dynamic CSS injection via wp_head action as fallback
  • Used both sibling (+) and general sibling (~) CSS selectors for DOM variations

[1.1.2] - 2025-12-21

Added

  • Catalog "View Options" button for products with quantity restrictions
  • Automatic button replacement in shop/category/archive pages
  • Eye icon (Dashicons) for "View Options" button styling

Changed

  • "Add to Cart" button replaced with "View Options" link on catalog pages for restricted products
  • CSS now loads on all WooCommerce pages (shop, cart, checkout, product)
  • Catalog buttons now direct to product page instead of adding to cart

Technical

  • Added has_quantity_restriction() static method in WC_TPP_Frontend class
  • Added modify_catalog_add_to_cart_button() method in WC_TPP_Frontend class
  • Extended woocommerce_loop_add_to_cart_link filter hook
  • CSS classes: wc-tpp-view-options, wc-tpp-cart-quantity, wc-tpp-restriction-notice
  • Updated enqueue_scripts() to load CSS on all WooCommerce pages

Translations

  • Added 2 new translatable strings
  • Updated all translations (en_US, de_DE, de_CH_informal)
  • Compiled all .mo files with new strings

[1.1.1] - 2025-12-21

Added

  • Cart quantity field hiding when package restriction is enabled
  • Automatic read-only quantity display in cart for restricted products

Changed

  • Cart quantity input replaced with plain text when restrictions apply
  • Enhanced cart display to prevent quantity modification for restricted products

Fixed

  • Cart quantity bypass vulnerability for package-restricted products

Technical

  • Added maybe_hide_cart_quantity_input() method in WC_TPP_Cart class
  • Extended woocommerce_cart_item_quantity filter hook
  • CSS class wc-tpp-cart-quantity for styled quantity display

[1.1.0] - 2025-12-21

Added

  • Package quantity restriction feature
  • Global setting to restrict quantities to defined package sizes
  • Per-product setting to restrict quantities to defined package sizes
  • Frontend validation preventing non-package quantities
  • Server-side cart validation for package quantities
  • User-friendly error messages showing available package sizes
  • Automatic quantity field hiding when restriction is enabled
  • Package selection UI with highlighted states

Changed

  • Enhanced package pricing display template with restriction mode support
  • Improved JavaScript to handle restricted mode package selection
  • Updated frontend to show "Choose a package size below" notice in restricted mode

Technical

  • Added validate_package_quantity() method in WC_TPP_Cart class
  • Added maybe_hide_quantity_input() method in WC_TPP_Frontend class
  • Extended woocommerce_add_to_cart_validation filter hook
  • Added wc-tpp-restricted-mode CSS class for styling
  • New product meta: _wc_tpp_restrict_to_packages
  • New global option: wc_tpp_restrict_package_quantities

Translations

  • Added 7 new translatable strings
  • Updated all translations (en_US, de_DE, de_CH_informal)
  • Compiled all .mo files with new strings

[1.0.2] - 2025-12-21

Changed

  • Migrated settings to WooCommerce Settings page as dedicated tab
  • Settings now appear under WooCommerce > Settings > Tier & Package Prices
  • Improved integration with WooCommerce native settings API

Added

  • WC_TPP_Settings class extending WC_Settings_Page
  • Better integration with WooCommerce settings system
  • Consistent UI with other WooCommerce settings tabs

Removed

  • Standalone settings submenu (WooCommerce > Tier & Package Prices)
  • Custom settings template (templates/admin/settings-page.twig)

Technical

  • Implemented WooCommerce settings filter hook (woocommerce_get_settings_pages)
  • Uses WC_Admin_Settings for rendering and saving
  • Automatic settings persistence via WooCommerce API

[1.0.1] - 2025-12-21

Added

  • Twig template engine integration for all templates
  • Template loader class with WordPress integration
  • German (Switzerland, Informal) translation (de_CH_informal)
  • Composer dependency management
  • Comprehensive translation support in Twig templates
  • Template caching support (disabled in debug mode)

Changed

  • Migrated all PHP templates to Twig format (.twig)
  • Improved template organization and separation of concerns
  • Enhanced security with automatic HTML escaping in templates
  • Updated composer.json with complete package metadata

Removed

  • Old PHP template files (replaced with Twig)

Technical

  • Added Twig v3.22.2 dependency
  • Created WC_TPP_Template_Loader class for centralized template rendering
  • Integrated WordPress functions (__(), e(), esc*, wc_price()) into Twig
  • Added Swiss German localization with informal address form
  • Organized templates into admin/ and frontend/ directories

[1.0.0] - 2025-12-21

Added

  • Initial release
  • Tier pricing functionality (quantity-based discounts)
  • Package pricing functionality (fixed-price bundles)
  • Admin settings page for plugin configuration
  • Product meta boxes for configuring tier and package prices
  • Frontend pricing tables display
  • Cart integration for automatic price calculation
  • WooCommerce HPOS compatibility
  • Multilingual support with text domain
  • German (Germany) translation (de_DE)
  • English (US) translation (en_US)

Features

  • Volume discounts based on quantity thresholds
  • Fixed-price packages with custom labels
  • Configurable display positions (before/after cart button, after price)
  • Real-time price updates in cart
  • Responsive pricing tables
  • Admin-friendly interface for price management