Files
wc-composable-product/CHANGELOG.md
magdev 413b5d8acd Add WooCommerce HPOS compatibility and fix pricing conflicts (v1.1.3)
Fixes WooCommerce compatibility warnings reported by user.

WooCommerce HPOS compatibility:
- Added before_woocommerce_init hook to declare HPOS compatibility
- Declares compatibility with custom_order_tables feature
- Ensures plugin works with WooCommerce's modern order storage

Price calculation improvements:
- Added static flag to prevent multiple executions
- Added composable_price_calculated flag to cart items
- Prevents conflicts with third-party pricing plugins
- Stops other plugins from re-calculating composable product prices

This resolves incompatibility warnings with:
- WooCommerce Analytics
- WooCommerce Update Manager
- Third-party pricing extensions

Files modified:
- wc-composable-product.php: Version 1.1.3, HPOS declaration
- includes/Cart_Handler.php: Improved price calculation guards
- CHANGELOG.md: Documented changes

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:11:29 +01:00

4.8 KiB

Changelog

All notable changes to this project will be documented in this file.

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

[1.1.3] - 2024-12-31

Added

  • WooCommerce HPOS (High-Performance Order Storage) compatibility declaration
  • Prevents duplicate price calculations to avoid conflicts with other pricing plugins

Fixed

  • WooCommerce compatibility warnings with Analytics and other WooCommerce extensions
  • Price calculation conflicts with third-party pricing plugins

Technical

  • Added before_woocommerce_init hook to declare HPOS compatibility
  • Implemented static flag in Cart_Handler::calculate_cart_item_price() to prevent multiple executions
  • Added composable_price_calculated flag to cart items to prevent re-calculation by other plugins
  • Ensures composable products work with WooCommerce's modern order storage system

[1.1.2] - 2024-12-31

Fixed

  • CRITICAL: Fixed persistent "Class WC_Settings_Page not found" error that continued in v1.1.1
  • Root cause: Settings.php was being included too early (during plugin init) before WC_Settings_Page was loaded
  • Solution: Delayed Settings.php inclusion until woocommerce_get_settings_pages filter when class is guaranteed to exist

Technical

  • Removed require_once Settings.php from Plugin::includes() (line 93)
  • Added require_once Settings.php to Plugin::add_settings_page() (line 196)
  • Settings file now loads on-demand when WooCommerce requests settings pages
  • Previous hook change (woocommerce_init) was insufficient - class loading order was the real issue

Notes

  • v1.1.1 attempted to fix this with hook change but the error persisted
  • This version addresses the actual root cause: premature class extension

[1.1.1] - 2024-12-31

Fixed

  • Settings page initialization timing issue causing "Class WC_Settings_Page not found" error
  • Changed hook from woocommerce_loaded to woocommerce_init to ensure WC_Settings_Page class is available
  • Plugin now initializes after all WooCommerce core classes are loaded

Technical

  • Hook changed from woocommerce_loaded to woocommerce_init in wc-composable-product.php:65
  • woocommerce_init fires after WooCommerce has finished loading all its core classes including settings

[1.1.0] - 2024-12-31

Added

  • Stock Management Integration: Complete inventory tracking system for composable products
    • Stock validation during product selection and add-to-cart
    • Automatic stock deduction when orders are completed/processed
    • Automatic stock restoration on order cancellation/refund
    • Stock status indicators in product selector (In stock, Low stock, Out of stock)
    • Visual feedback for out-of-stock items (disabled checkboxes, reduced opacity)
    • Low stock warnings when 5 or fewer items remain
    • Prevention of out-of-stock item selection
    • Order notes documenting stock changes

Technical

  • New Stock_Manager class handling all stock operations
  • Integration with WooCommerce order status hooks
  • Stock information passed to frontend via Twig template
  • Enhanced CSS styling for stock status badges
  • Stock data stored in order item meta for accurate tracking
  • Backorder support detection and handling

Translation

  • Added 8 new translatable strings for stock messages
  • Updated Italian (Switzerland) translation with stock-related terms
  • Updated translation template (.pot file)

[1.0.1] - 2024-12-31

Fixed

  • Fatal error "Class WC_Settings_Page not found" during plugin activation
  • Changed initialization hook from plugins_loaded to woocommerce_loaded to ensure WooCommerce classes are available before plugin initialization
  • Settings page now correctly integrates as a tab in WooCommerce > Settings

Technical

  • Plugin now waits for woocommerce_loaded action before initializing
  • Prevents race condition where WooCommerce classes weren't loaded yet
  • Settings tab appears correctly in WooCommerce settings interface

1.0.0 - 2024-12-31

Added

  • Initial release
  • Composable product type for WooCommerce
  • Product selection by category, tag, or SKU
  • Configurable selection limits (global and per-product)
  • Two pricing modes: fixed price or sum of selected products
  • Admin settings page
  • Frontend product selector with grid layout
  • AJAX add-to-cart functionality
  • Twig template engine integration
  • Full internationalization support
  • Responsive design
  • WooCommerce cart integration
  • Product data validation

Features

  • Select products from predefined categories, tags, or SKUs
  • Limit number of items customers can select
  • Visual product selector with images and prices
  • Real-time price calculation
  • Clean, modern UI
  • Mobile responsive
  • Translation ready