You've already forked wc-composable-product
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 669888817b | |||
| 5564b888fc | |||
| 91aca25169 |
31
CHANGELOG.md
31
CHANGELOG.md
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.1.13] - 2025-12-31
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **CRITICAL**: "No products available for selection" message showing even when products are configured
|
||||||
|
- Removed overly strict `is_in_stock()` requirement that was filtering out all products
|
||||||
|
- Products now show regardless of stock status (out-of-stock items are displayed but disabled)
|
||||||
|
- Added `'relation' => 'AND'` to meta_query for proper handling of multiple meta conditions
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Product retrieval now shows all purchasable products, not just in-stock ones
|
||||||
|
- Stock status still displayed on frontend with appropriate styling
|
||||||
|
- Out-of-stock items shown but disabled via checkbox and visual indicators
|
||||||
|
- Frontend stock management from v1.1.0 still fully functional
|
||||||
|
|
||||||
|
### Technical
|
||||||
|
|
||||||
|
- Modified file: includes/Product_Type.php (lines 117-124, 177, 181)
|
||||||
|
- Changed from `$variation->is_in_stock() && $variation->is_purchasable()` to just `$variation->is_purchasable()`
|
||||||
|
- Changed from `$product->is_in_stock() && $product->is_purchasable()` to just `$product->is_purchasable()`
|
||||||
|
- Added `'relation' => 'AND'` to meta_query array for WordPress query compatibility
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
- This fixes the issue where NO products were showing in the selector
|
||||||
|
- Stock validation still occurs at add-to-cart time (Stock_Manager class)
|
||||||
|
- Frontend still displays stock badges (in stock, low stock, out of stock)
|
||||||
|
- Out-of-stock items remain non-selectable via disabled checkboxes
|
||||||
|
- All translation files remain at 100% completion (57/57 strings)
|
||||||
|
|
||||||
## [1.1.12] - 2025-12-31
|
## [1.1.12] - 2025-12-31
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ class Product_Type extends \WC_Product {
|
|||||||
|
|
||||||
// Exclude composable products from selection
|
// Exclude composable products from selection
|
||||||
$args['meta_query'] = [
|
$args['meta_query'] = [
|
||||||
|
'relation' => 'AND',
|
||||||
[
|
[
|
||||||
'key' => '_product_type',
|
'key' => '_product_type',
|
||||||
'value' => 'composable',
|
'value' => 'composable',
|
||||||
@@ -174,11 +175,11 @@ class Product_Type extends \WC_Product {
|
|||||||
$variation_ids = $product->get_children();
|
$variation_ids = $product->get_children();
|
||||||
foreach ($variation_ids as $variation_id) {
|
foreach ($variation_ids as $variation_id) {
|
||||||
$variation = wc_get_product($variation_id);
|
$variation = wc_get_product($variation_id);
|
||||||
if ($variation && $variation->is_in_stock() && $variation->is_purchasable()) {
|
if ($variation && $variation->is_purchasable()) {
|
||||||
$products[] = $variation;
|
$products[] = $variation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($product->is_in_stock() && $product->is_purchasable()) {
|
} elseif ($product->is_purchasable()) {
|
||||||
// Simple and other product types
|
// Simple and other product types
|
||||||
$products[] = $product;
|
$products[] = $product;
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
releases/wc-composable-product-v1.1.12.zip
Normal file
BIN
releases/wc-composable-product-v1.1.12.zip
Normal file
Binary file not shown.
1
releases/wc-composable-product-v1.1.12.zip.md5
Normal file
1
releases/wc-composable-product-v1.1.12.zip.md5
Normal file
@@ -0,0 +1 @@
|
|||||||
|
546b9f9dd4ef0ec174d574af301a7bbc wc-composable-product-v1.1.12.zip
|
||||||
1
releases/wc-composable-product-v1.1.12.zip.sha256
Normal file
1
releases/wc-composable-product-v1.1.12.zip.sha256
Normal file
@@ -0,0 +1 @@
|
|||||||
|
c445f1744d28cb53ef314f2dbb253aae31a7750f49f615f5c11a109274736f75 wc-composable-product-v1.1.12.zip
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: WooCommerce Composable Products
|
* Plugin Name: WooCommerce Composable Products
|
||||||
* Plugin URI: https://github.com/magdev/wc-composable-product
|
* Plugin URI: https://github.com/magdev/wc-composable-product
|
||||||
* Description: Create composable products where customers select a limited number of items from a configurable set
|
* Description: Create composable products where customers select a limited number of items from a configurable set
|
||||||
* Version: 1.1.12
|
* Version: 1.1.13
|
||||||
* Author: Marco Graetsch
|
* Author: Marco Graetsch
|
||||||
* Author URI: https://example.com
|
* Author URI: https://example.com
|
||||||
* License: GPL v3 or later
|
* License: GPL v3 or later
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
defined('ABSPATH') || exit;
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
// Define plugin constants
|
// Define plugin constants
|
||||||
define('WC_COMPOSABLE_PRODUCT_VERSION', '1.1.12');
|
define('WC_COMPOSABLE_PRODUCT_VERSION', '1.1.13');
|
||||||
define('WC_COMPOSABLE_PRODUCT_FILE', __FILE__);
|
define('WC_COMPOSABLE_PRODUCT_FILE', __FILE__);
|
||||||
define('WC_COMPOSABLE_PRODUCT_PATH', plugin_dir_path(__FILE__));
|
define('WC_COMPOSABLE_PRODUCT_PATH', plugin_dir_path(__FILE__));
|
||||||
define('WC_COMPOSABLE_PRODUCT_URL', plugin_dir_url(__FILE__));
|
define('WC_COMPOSABLE_PRODUCT_URL', plugin_dir_url(__FILE__));
|
||||||
|
|||||||
Reference in New Issue
Block a user