CRITICAL FIX: WordPress plugin directory structure
Previous issue:
- ZIP contained files at root level
- WordPress created directory based on ZIP name: wc-composable-product-v1.1.7/
- This caused version-numbered directory in wp-content/plugins/
Corrected structure:
- ZIP now contains wc-composable-product/ parent directory
- All plugin files inside wc-composable-product/ directory
- WordPress extracts to wp-content/plugins/wc-composable-product/ (correct!)
Changes:
- Recreated ZIP with proper directory structure using rsync + zip
- Package size: 410 KB (419,697 bytes) - slightly larger due to parent dir
- New SHA-256: 866e7dd34431f4c881629fd8b59ddd3a27c7a45b7324a3d88cd064a3e01c1b83
- New MD5: 871fbb3b910380c0e43bcf1538408eda
WordPress standard: Plugin ZIP must contain single parent directory named after
the plugin slug, with all files inside that directory.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Release package for v1.1.6 including:
- Complete admin translations for Fixed Price field (v1.1.4 feature)
- All 6 locales with 56/56 strings translated (.po files)
- Package size: 378 KB (1,092,772 bytes)
- Files included: 370 files
Checksums:
- SHA-256: d64f4f5f1a00d392989cb613780e5726106a08c6aace08e0c74c80553a0b0f1e
- MD5: eae384e342450abd4ac83af0266ac764
Note: This version includes .po translation files but not compiled .mo files.
Users should upgrade to v1.1.7 for functional translations in WordPress.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Release v1.1.2 - CRITICAL bug fix for Settings.php class loading
This release fixes the persistent WC_Settings_Page error that affected all previous versions including v1.1.1.
Root cause:
- Settings.php extends WC_Settings_Page
- File was being required during Plugin::includes()
- WC_Settings_Page class didn't exist at that point
- Hook timing changes (v1.0.1, v1.1.1) were insufficient
Solution implemented:
- Removed require_once from Plugin::includes()
- Moved to Plugin::add_settings_page() callback
- Loads on-demand via woocommerce_get_settings_pages filter
- WC_Settings_Page guaranteed to exist at that point
Package contents:
- Plugin source files (v1.1.2)
- Stock management integration (v1.1.0 feature)
- Complete vendor dependencies (Twig 3.0)
- Translation files for 6 locales
- Documentation and changelog
Package size: 383 KB
SHA-256: 191eae035b34ce8b33b90cf9d85ed54e493c1b471cda0efe5c992a512e91cc36
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
CRITICAL BUG FIX: v1.1.1 still had the same error!
Root cause analysis:
- v1.1.1 changed hook to woocommerce_init but error persisted
- Real issue: Settings.php was require_once'd in Plugin::includes()
- At that point, class extends WC_Settings_Page which doesn't exist yet
- Even woocommerce_init fires before WC_Settings_Page is loaded
Solution:
- Removed require_once from Plugin::includes() (line 93)
- Moved require_once to Plugin::add_settings_page() (line 196)
- Settings.php now loads on-demand via woocommerce_get_settings_pages filter
- This filter fires when WooCommerce has loaded all settings classes
Changes:
- includes/Plugin.php: Delayed Settings.php inclusion with explanatory comment
- wc-composable-product.php: Version bump to 1.1.2
- CHANGELOG.md: Documented fix and noted v1.1.1 was insufficient
This addresses the actual root cause that persisted through 3 versions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>