You've already forked wc-tier-and-package-prices
Update CLAUDE.md with v1.2.7 learnings and roadmap
Updated documentation to reflect: - Current version is now 1.2.7 - v1.2.5 issues (table headers, parent pricing forms) are FIXED in v1.2.6/v1.2.7 - Translation updates completed in v1.2.7 - Added critical section on WooCommerce product type-specific hooks Key learnings documented: - woocommerce_product_options_pricing only fires for simple products - woocommerce_product_options_general_product_data fires for all product types - Proper hook selection is critical for variable product parent UI 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
24
CLAUDE.md
24
CLAUDE.md
@@ -1,7 +1,7 @@
|
|||||||
# WooCommerce Tier and Package Prices - AI Context Document
|
# WooCommerce Tier and Package Prices - AI Context Document
|
||||||
|
|
||||||
**Last Updated:** 2025-12-30
|
**Last Updated:** 2025-12-30
|
||||||
**Current Version:** 1.2.5
|
**Current Version:** 1.2.7
|
||||||
**Author:** Marco Graetsch
|
**Author:** Marco Graetsch
|
||||||
**Project Status:** Production-ready WordPress plugin
|
**Project Status:** Production-ready WordPress plugin
|
||||||
|
|
||||||
@@ -765,13 +765,17 @@ Roadmap for the upcoming development.
|
|||||||
|
|
||||||
2. ~~Make it possible to define tier or package prices on variable products in the parent product as a default for that product and all variants of it unless a variant has its own tier or package prices.~~ ✅ **COMPLETED in v1.2.5** - Implemented parent product default pricing with automatic fallback. Variable products can define tier/package pricing once at parent level; variations inherit these defaults unless they have their own specific pricing. Added helper methods in cart class and updated all pricing/restriction checks to support parent fallback.
|
2. ~~Make it possible to define tier or package prices on variable products in the parent product as a default for that product and all variants of it unless a variant has its own tier or package prices.~~ ✅ **COMPLETED in v1.2.5** - Implemented parent product default pricing with automatic fallback. Variable products can define tier/package pricing once at parent level; variations inherit these defaults unless they have their own specific pricing. Added helper methods in cart class and updated all pricing/restriction checks to support parent fallback.
|
||||||
|
|
||||||
##### Fixes for v1.2.5
|
##### Bugfixes (Completed in v1.2.6 and v1.2.7)
|
||||||
|
|
||||||
1. The table headers in admin are still visible.
|
1. ~~Table headers in admin are still visible when empty.~~ ✅ **FIXED in v1.2.7** - The CSS `:has()` pseudo-class approach from v1.2.5/v1.2.6 wasn't working reliably across all browsers. Implemented JavaScript-based solution that adds/removes `has-rows` class on tables. Headers now hide by default (CSS) and show only when table has rows (JavaScript toggles class). Function `updateTableHeaders()` is called on page load and after all add/remove row operations.
|
||||||
|
|
||||||
2. The parent product fallback on variable product is also not visible.
|
2. ~~Parent product pricing forms not visible in admin.~~ ✅ **FIXED in v1.2.6 and v1.2.7** - The backend fallback logic from v1.2.5 was implemented but the admin UI to configure it was missing. Added `add_variable_parent_pricing_fields()` method that displays pricing forms for variable product parents. Fixed hook issue in v1.2.7: changed from `woocommerce_product_options_pricing` (only fires for simple products) to `woocommerce_product_options_general_product_data` (fires for all product types). Variable product parents now have a "Default Tier & Package Pricing for All Variations" section where defaults can be configured.
|
||||||
|
|
||||||
##### Planned Enhancements for v1.2.6+
|
##### Translation Updates (Completed in v1.2.7)
|
||||||
|
|
||||||
|
1. ✅ **COMPLETED** - Updated all translation files (.pot, .po, .mo) with new strings from v1.2.6 and v1.2.7 for variable product parent pricing features. All 7 language variants updated with translations for "Default Tier & Package Pricing for All Variations" and related strings.
|
||||||
|
|
||||||
|
##### Planned Enhancements for v1.2.8+
|
||||||
|
|
||||||
1. Create different, selectable templates for tierprices and packages to use in the frontend. Make the new templates selectable globally on the settings-page, not per product.
|
1. Create different, selectable templates for tierprices and packages to use in the frontend. Make the new templates selectable globally on the settings-page, not per product.
|
||||||
|
|
||||||
@@ -789,6 +793,16 @@ Roadmap for the upcoming development.
|
|||||||
- Always check filter/action documentation for parameter types
|
- Always check filter/action documentation for parameter types
|
||||||
- Don't assume cart item arrays everywhere - sometimes it's product objects!
|
- Don't assume cart item arrays everywhere - sometimes it's product objects!
|
||||||
|
|
||||||
|
#### CRITICAL: Product Type-Specific Hooks (Learned in v1.2.6/v1.2.7)
|
||||||
|
|
||||||
|
WooCommerce has different hooks for different product types in the admin product edit page:
|
||||||
|
|
||||||
|
- `woocommerce_product_options_pricing` - **ONLY fires for simple products**, NOT variable products
|
||||||
|
- `woocommerce_product_options_general_product_data` - Fires for ALL product types after the general tab
|
||||||
|
- `woocommerce_variation_options_pricing` - Fires for individual variations within variable products
|
||||||
|
|
||||||
|
**Lesson:** When adding admin UI for variable product parents, use `woocommerce_product_options_general_product_data` and check `$product->is_type('variable')` to conditionally display. Using `woocommerce_product_options_pricing` will cause forms to never appear for variable products (as discovered in v1.2.6 → v1.2.7 fix).
|
||||||
|
|
||||||
### When Adding Features
|
### When Adding Features
|
||||||
|
|
||||||
- Follow the existing pattern: add setting → add UI → add logic → add template
|
- Follow the existing pattern: add setting → add UI → add logic → add template
|
||||||
|
|||||||
Reference in New Issue
Block a user