You've already forked wc-composable-product
Fix three critical bugs that persisted through v1.1.11-v1.1.14: - Product selection always empty: meta_query checked _product_type in postmeta, but WooCommerce uses the product_type taxonomy. Replaced with correct tax_query using NOT IN operator. - Cart price always 0.00: composable_price_calculated flag persisted in session, preventing recalculation on page loads. Removed flag; static variable already handles per-request dedup. - Admin tabs both visible on load: JS now triggers WooCommerce native tab click instead of manually toggling panel visibility. Add Gitea CI/CD release workflow triggered on v* tags. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
100 lines
2.9 KiB
Markdown
100 lines
2.9 KiB
Markdown
# WooCommerce Composable Products
|
|
|
|
Create composable products where customers can select a limited number of items from a configurable set of products.
|
|
|
|
## Description
|
|
|
|
This plugin adds a new product type to WooCommerce that allows customers to build their own product bundles by selecting from a predefined set of simple or variable products. Think of it as a "build your own gift box" or "create your sticker pack" feature.
|
|
|
|
### Key Features
|
|
|
|
- **Custom Product Type**: New "Composable Product" type in WooCommerce
|
|
- **Flexible Selection**: Define available products by category, tag, or SKU
|
|
- **Variable Product Support**: Automatically expands variable products into selectable variations
|
|
- **Stock Management**: Real-time stock validation, visual indicators, and automatic inventory tracking
|
|
- **Configurable Limits**: Set global or per-product selection limits
|
|
- **Pricing Options**: Fixed price or sum of selected products with full locale-aware formatting
|
|
- **Multi-language Support**: Fully translated in 6 locales (de_DE, de_CH, fr_CH, it_CH + informal variants)
|
|
- **Modern UI**: Clean interface built with Twig templates and vanilla JavaScript
|
|
- **CI/CD**: Automated release workflow for Gitea
|
|
|
|
## Requirements
|
|
|
|
- PHP 8.3 or higher
|
|
- WordPress 6.0 or higher
|
|
- WooCommerce 8.0 or higher
|
|
|
|
## Installation
|
|
|
|
1. Upload the plugin files to `/wp-content/plugins/wc-composable-product/`
|
|
2. Run `composer install --no-dev` in the plugin directory
|
|
3. Activate the plugin through the 'Plugins' menu in WordPress
|
|
4. Configure global settings under WooCommerce > Settings > Composable Products
|
|
|
|
## Usage
|
|
|
|
### Creating a Composable Product
|
|
|
|
1. Go to Products > Add New
|
|
2. Select "Composable Product" as the product type
|
|
3. Configure product details:
|
|
- Set the selection limit (or use global default)
|
|
- Choose pricing mode (fixed or sum)
|
|
- Define available products by category, tag, or SKU
|
|
4. Publish the product
|
|
|
|
### Global Settings
|
|
|
|
Navigate to WooCommerce > Settings > Composable Products to configure:
|
|
|
|
- Default selection limit
|
|
- Default pricing mode
|
|
- Display options
|
|
|
|
## Development
|
|
|
|
This project was created with AI assistance (Claude.AI) and follows WordPress and WooCommerce best practices.
|
|
|
|
### Building from Source
|
|
|
|
```bash
|
|
composer install
|
|
```
|
|
|
|
### Translation
|
|
|
|
Generate POT file:
|
|
|
|
```bash
|
|
wp i18n make-pot . languages/wc-composable-product.pot
|
|
```
|
|
|
|
Compile translations:
|
|
|
|
```bash
|
|
for po in languages/*.po; do msgfmt -o "${po%.po}.mo" "$po"; done
|
|
```
|
|
|
|
### Creating Releases
|
|
|
|
Releases are automated via Gitea CI/CD. Push an annotated tag to trigger:
|
|
|
|
```bash
|
|
git tag -a v1.2.0 -m "Release v1.2.0"
|
|
git push origin v1.2.0
|
|
```
|
|
|
|
The workflow builds the release ZIP, compiles translations, generates checksums, and creates a Gitea release with attachments.
|
|
|
|
## License
|
|
|
|
GPL v3 or later - see LICENSE file for details
|
|
|
|
## Author
|
|
|
|
Marco Graetsch
|
|
|
|
## Support
|
|
|
|
For issues and feature requests, please use the GitHub issue tracker.
|